Какая кодировка символов используется для ALT-кодов?

1838
Angus

В Windows, при вводе символов с помощью ALT + nnn, какая кодировка используется? А при вводе символов с ALT + 0nnn какая кодировка используется? И как эти ответы зависят от языка Windows и настроек метода ввода, если таковые имеются? И всегда ли так, что коды повторяются после 255?

Я нашел несколько веб-сайтов с информацией, которая сбивает с толку, устарела, возможно, зависит от языка или просто неверна. И несмотря на то, что это хорошо известная и широко используемая функция Windows, я не могу найти какой-либо разумной официальной документации по ней.

6

1 ответ на вопрос

4
RedGrittyBrick

Я считаю, что эти сочетания клавиш зависят от библиотек, используемых конкретными программами, такими как Word, Excel и Notepad. Ссылки на коды символов Alt на сайте microsoft.com всегда находятся в контексте определенного приложения или набора.

Символ, полученный в результате Alt + nnn, не должен зависеть от какого-либо IME, но должен учитывать параметры документа, приложения или языка Windows, которые определяют кодовую страницу по умолчанию, используемую в настоящее время.

Microsoft более ловко использует такие термины, как ASCII и ANSI, документация Alt + nnn отражает это.

Вот небольшой эксперимент в командной строке на Vista

c:\>chcp 437 Active code page: 437 c:\>rem alt+224 α c:\>rem alt+0224 à  c:\>chcp 869 Active code page: 869 c:\>rem alt+224 ζ c:\>rem alt+0224 à c:\>rem alt 0137 ‰ 

После добавления греческой раскладки клавиатуры на панели управления и выбора греческого языка из языковой панели, эксперимент в WordPad показал, что ALt + 0224 затем выдает ΰ из кодовой страницы 1253 (современный греческий язык), а Alt + 224 выдает Σ (хотя у меня нет) t обнаружил, какая кодовая страница DOS / OEM подразумевает)

Из чего я могу сделать вывод, что

  • Alt + nnn всегда является текущей кодовой страницей DOS (также называемой OEM)
  • Alt + 0nnn всегда текущая кодовая страница Windows
  • вышесказанное отличается
  • языковая панель может быть использована для их изменения.

По крайней мере, для программ, которые я пробовал.

Я бы сказал, что очень сомнительно, что это на самом деле осуществляется самими программами. Скорее, он, вероятно, реализован некоторыми базовыми примитивами пользовательского интерфейса, такими как элемент управления Edit. Просто проверяя в разных местах текущего пользовательского интерфейса, я обнаружил, что в любом месте, где я могу поместить курсор, я могу использовать метод alt для ввода символов. Если вы посмотрите документацию для элемента управления Rich Edit, вы увидите ярлык Alt + Numpad и несколько других, связанных с ним. http://msdn.microsoft.com/en-us/library/windows/desktop/bb787873(v=vs.85).aspx Svend 12 лет назад 1
@Svend: Я верю, что вы правы, я исправлю свой ответ соответственно. Однако не все приложения Windows используют одни и те же библиотеки и элементы управления. Очевидным и неудивительным примером будут сторонние приложения, такие как gVim. Для меня не исключено, что могут быть различия между приложениями, которые используют commctrl.dll, comctl32.dll, MFC и .Net или OWL, VCL и т. Д. RedGrittyBrick 12 лет назад 0
Вы можете найти свою кодовую страницу OEM, открыв окно команд и используя команду `CHCP`. Вы также можете использовать эту команду для изменения кодовой страницы, используемой только для этого окна. Mark Ransom 7 лет назад 0