3

Это относится как к Windows XP, так и к Windows 7.

Некоторые из моих файлов имеют имена с европейскими символами, например, немецкий a-umlaut, также известный как a-diaeresis.

Они правильно отображаются в проводнике Windows, а также в окне командной оболочки (cmd.exe) в ответ на команду "dir".

Однако, если эта команда "dir" направлена в файл, например

dir > file.txt

затем европейские символы в этом файле представлены в кодовой странице DOS; например, a-umlaut представляется в виде десятичного числа 132 (гекс 0x84). Это не то, что я хочу. Я хочу, чтобы файл находился в кодовой странице ANSI, где, например, a-umlaut является десятичным 228 (hex 0xE4).

Выдача команды "cmd /?""приводит к справочной информации, включая строку

/A      Causes the output of internal commands to a pipe or file to be ANSI

Это звучит как то, что я хочу. Тем не менее, либо последовательность команд

cmd /A
dir > file.txt
exit

или эквивалентная одиночная командная строка

cmd /A /C dir > file.txt

выдает точно такой же файл file.txt, что и раньше; с его европейскими символами все еще в кодовой странице DOS.

Итак, мой вопрос, как я могу получить "dir" для записи файла в кодовую страницу ANSI?

  • Богатые

2 ответа2

3

Я думаю, что есть простой способ, "из коробки"

chcp 1252
dir > file.txt
0

Вы ведете вверх по садовой дорожке буквой "А". Параметр /A не отличает кодовые страницы "ANSI" от "OEM". Он отличает 8-битные однобайтовые / многобайтовые наборы символов от 16-битного Unicode (опция /U ). 8-битный вывод SBCS / MBCS из программы Win32, такой как CMD , на консоль обрабатывается в кодовой странице "OEM".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .