Windows XP - cmd.exe - Невозможно выполнить командный файл после переключения на кодовую страницу utf8 - PullRequest
3 голосов
/ 03 февраля 2011

После переключения на кодовую страницу utf8 с «mode con cp select = 65001» пакетная обработка швов перестает работать без каких-либо сообщений об ошибках.

Таким образом, выполнение «cmd.exe / c test.bat» в недавно запущенной консоли с активной кодовой страницей 437 или 850 работает нормально. Выполнение «mode con cp select = 65001» работает нормально. Отображение UTF-8 символов работает отлично. Выполнение чего-то вроде "эхо Hallo!" отлично работает.

Но выполнение «cmd.exe / c test.bat» перестает работать без сообщения об ошибке.

Это не только ошибка отображения: командный файл не выполняется.

Переключение на любой «старый» набор символов позволяет снова работать нормально. Переключение на набор символов UTF8 позволяет снова перестать работать.

Конечно, воздержание от UTF8 - это решение, но с плохими побочными эффектами на заднем плане.

1 Ответ

4 голосов
/ 03 февраля 2011

Я не знаю, как запустить пакетный файл после изменения кодовой страницы на 65001.
Даже если вы сохраните командный файл в utf16-le или utf16-be, он не запустится.

Но вы можете запустить командный файл и изменить кодовую страницу внутри,
но важно, чтобы остальная часть кода кэшировалась в блоке (скобка или строка с амперсандом).

@echo off
(
chcp 65001
rem Do my UTF work
chcp 850
)
echo This works

chcp 65001 & type myFile & chcp 850
echo This also works
...