Обработка расширенных символов в командах Windows?

Я нашел решение для моей ошибки синтаксиса кода. Он прикреплен и работает Snipit Code

6
задан McDowell 11 April 2009 в 09:35
поделиться

5 ответов

Спасибо Макдауэллу и Ромуло за то, что они указали мне правильное направление. Я понял, что мне нужно изменить свое приложение (в Delphi), которое генерирует пакет, чтобы оно использовало надлежащую (OEM) кодовую страницу, совместимую с командным процессором в Windows. Я не нашел ничего для преобразования строк кодовой страницы, но я обнаружил функции Windows API SetFileApisToOEM и SetFileApisToANSI;

Я поместил их в начало и конец моей программы, например так:

3
ответ дан 10 December 2019 в 00:44
поделиться

Сценарий должен быть написан в той же кодировке, что и cmd.exe .

Тип chcp в командной строке и посмотрите, что вы получите. Затем откройте файл в редакторе, который поддерживает эту кодировку. Для меня chcp выводит кодовую страницу 850 , поэтому я редактирую свой скрипт в JEdit , выбирая IBM850 в качестве кодировки файла. Я получаю тот же результат, редактируя файл в PSPad с форматом , установленным на OEM .

PS: я проверил ваши шаги на моей машине и - символ, который я пишу в notepad.exe (используя кодировку ANSI по умолчанию), также преобразуется в ± при чтении из командной строки, поэтому он выглядит как ваш Машина использует аналогичные кодировки ANSI и OEM. Чтобы быть уверенным, попробуйте заменить - на ¤ notepad.exe ). Это заставляет скрипт работать правильно для меня при запуске из командной строки (потому что значение байта ANSI ¤ такое же, как у OEM - ).

4
ответ дан 10 December 2019 в 00:44
поделиться

Codepages are a problem in batch files as they are not allowed to contain Unicode. The easiest way to avoid this issue altogether would probably be to use WSH or Powershell. I haven't found a workaround for batch files so far which really bothers me as I consider myself a Unicode zealot :)

1
ответ дан 10 December 2019 в 00:44
поделиться

Я смотрел на обработку символов в cmd.exe и думаю Ромуло ударил ногтем по голове. По умолчанию в приглашении используются старые кодовые страницы DOS (OEM) (возможно, для совместимости с программами DOS). Вы пишете свой файл, используя (вероятно) кодовую страницу Windows по умолчанию (вероятно, 1252), которая отличается. Используйте edit.com для редактирования командного файла.

Если я наберу chcp в приглашении, он сообщит кодовую страницу 850.

Так, например, если я используйте Блокнот , чтобы напечатать это:

DIR Pezuñero

... это закодировано как 1252 с двоичными значениями:

                        ñ
44 49 52 20 50 65 7A 75 F1 65 72 6F

Если я использую , отредактируйте , чтобы написать файл, он закодирован как 850 с двоичными значениями:

                        ñ
44 49 52 20 50 65 7A 75 A4 65 72 6F

Одна вещь, на которую я не смотрел, это использование переключателя cmd / U ,

2
ответ дан 10 December 2019 в 00:44
поделиться

Возможно, вам понадобится установить кодовую страницу, в которой n будет с ~ сверху.

0
ответ дан 10 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: