Юникод
- 1 year ago
- 0
- 0
Одной из первых компаний, последовательно внедрявших Юникод , была Майкрософт — Windows NT была первой операционной системой , использовавшей Юникод в системных вызовах. Было выбрано двухбайтное представление символов ( UCS-2 ); начиная с Windows 2000 , возможно представление символов дополнительных плоскостей с помощью суррогатных пар UTF-16 .
Переход на Unicode был поэтапным :
Операционные системы
Windows XP
и
Windows Server 2003
, как и предшествующие им
Windows NT 4
и
Windows 2000
, поставляются с системными библиотеками, включающими функции обоих видов: юникодовые и предназначенные для работы со строками в текущей
кодовой странице
системы, условно называемой ANSI-страницей. При этом для вызова юникодовых функций используется суффикс
W
(от слова wide «широкий», например,
lstrlenW()
), а для вызова ANSI-функций используется буква
A
(например,
lstrlenA()
). В результате на ОС семейства Windows NT запускаются и
программы
, способные использовать Юникод, и более старые программы, неспособные одновременно работать с символами разных языков. Большинство ANSI-функций реализовано как оболочки над соответствующими юникодовыми функциями. Использовать при этом можно только поддерживаемые этими программами символы.
В Windows CE , начиная с самых первых версий, за исключением малого числа случаев, использовался только UTF-16 .
В 2001 году корпорация Майкрософт выпустила специальное дополнение к своим старым операционным системам Windows 95 , Windows 98 и Windows Me . Дополнение называется слоем (уровнем) Юникода ( англ. Microsoft Layer for Unicode , MSLU ) и обеспечивает поддержку Юникода на указанных старых платформах. Это дополнение включает в себя динамическую библиотеку unicows.dll (всего 240 Кбайт ), содержащую юникодовые версии (те, что с буквой W на конце) всех основных функций Windows API . В результате на старых операционных системах Windows стало возможно запускать как старые, так и новые программы, рассчитанные на использование Юникода.
В Windows NT включена функция IsTextUnicode , которая пытается статистическими методами определить, содержит ли переданная ей строка текст в Юникоде. Для очень коротких текстов эта функция часто даёт неверный результат. Например, эту функцию использует стандартный текстовый редактор Windows NT — Блокнот при открытии текстовых файлов, что породило легенды о существовании в нём « пасхальных яиц » следующего рода:
- Откройте программу Блокнот и наберите следующий текст:
- Билл Гейтс самый умный
- Сохраните текст и закройте программу.
- Откройте сохранённый текстовый документ, скопируйте текст в другой текстовый редактор (например, Microsoft Word ), и вы увидите его содержимое:
- 쌠
Более эффектными являются фразы, целиком состоящие из латинских букв (например, «this app can break»), потому что в этом случае при неверном распознавании кодировки будет отображаться целая строка некорректных символов. .