суббота, 12 февраля 2011 г.

Почему кодовая страница OEM часто называется ANSI?

Это перевод Why is the OEM code page often called ANSI? Автор: Реймонд Чен.

Denis Bider указал, что документация к программе cmd.exe говорит:
/A - приводит к тому, что вывод от внутренних команд в канал или файл будет происходить в ANSI
даже хотя вывод будет вообще-то в OEM. Почему существует такая и подобные ошибки?

Потому что иногда ANSI означает OEM.

"A"-вариант консольных функций принимает символы в кодовой странице OEM, несмотря на суффикс "A", который предполагает ANSI. Более того, если вы вызовите функцию SetFileAPIsToOEM, то "A"-функции, которые принимают имена файлов будут также трактовать имена файлов в кодовой странице OEM, вместо умалчиваемой ANSI.

"В мире есть два типа людей: те, кто верят, что мир может быть поделен на два типа людей, и те - кто не верят."

Есть те, кто мысленно делят мир символов на две группы: Unicode и 8-бит. Как вы видите, многие из них участвовали в проектировании оригинального Win32: у вас есть "W"-функции (Unicode) и "A"-функции (ANSI). Не существует никаких "O"-функций (OEM). Вместо этого, все, кто с OEM, сосредотачиваются в том же лагере, что и ANSI.

Есть и те, кто различают эти два случая, но из-за лени или просто удобства ради часто используют "ANSI" как аббревиатуру "подходящая 8-ми битная кодовая страница, определяемая из контекста". В контексте консольного программирования "подходящей 8-ми битной кодовой страницей" оказывается набор символов OEM.

Человек, который писал документацию к cmd.exe, очевидно считал, что ANSI означает "штука, которая не Unicode".
/A - приводит к тому, что вывод от внутренних команд в канал или файл будет происходить в ANSI
/U - приводит к тому, что вывод от внутренних команд в канал или файл будет происходить в Unicode
Определить, принадлежит ли автор этих строк лагерю "Всё является либо Unicode, либо ANSI" или нет, я оставлю вам в качестве упражнения.

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.