Юникод в Windows: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Отмена правки 9833725 участника Dimanc (обс): можно переименовать.
Нет описания правки
Строка 2: Строка 2:


Современные операционные системы [[Microsoft Windows XP|Windows XP]] и [[Microsoft Windows Server 2003|Windows Server 2003]], как и предшествующие им [[Microsoft Windows NT 4.0|Windows NT 4]] и [[Microsoft Windows 2000|Windows 2000]], поставляются с системными библиотеками, включающими функции обоих видов: юникодовые и предназначенные для работы со строками в текущей [[кодовая страница|кодовой странице]] системы, условно называемой ANSI-страницей. При этом для вызова юникодовых функций используется суффикс '''W''' (от слова wide «широкий», например, <code>lstrlenW()</code>), а для вызова ANSI-функций используется буква '''A''' (например, <code>lstrlenA()</code>). В результате на ОС семейства Windows NT запускаются и [[компьютерная программа|программы]], способные использовать Юникод, и более старые программы, неспособные одновременно работать с символами разных языков. Большинство ANSI-функций реализованы как оболочки над соответствующими юникодовыми функциями.
Современные операционные системы [[Microsoft Windows XP|Windows XP]] и [[Microsoft Windows Server 2003|Windows Server 2003]], как и предшествующие им [[Microsoft Windows NT 4.0|Windows NT 4]] и [[Microsoft Windows 2000|Windows 2000]], поставляются с системными библиотеками, включающими функции обоих видов: юникодовые и предназначенные для работы со строками в текущей [[кодовая страница|кодовой странице]] системы, условно называемой ANSI-страницей. При этом для вызова юникодовых функций используется суффикс '''W''' (от слова wide «широкий», например, <code>lstrlenW()</code>), а для вызова ANSI-функций используется буква '''A''' (например, <code>lstrlenA()</code>). В результате на ОС семейства Windows NT запускаются и [[компьютерная программа|программы]], способные использовать Юникод, и более старые программы, неспособные одновременно работать с символами разных языков. Большинство ANSI-функций реализованы как оболочки над соответствующими юникодовыми функциями.

В [[Windows CE]], начиная с самых первых версий за исключением малого числа случаев использовался только [[UTF-16]].


В [[2001]] году корпорация Майкрософт выпустила специальное дополнение к своим старым операционным системам [[Microsoft Windows 95|Windows 95]], [[Microsoft Windows 98|Windows 98]] и [[Microsoft Windows Me|Windows Me]]. Дополнение называется «Слой Майкрософт для Юникода» ({{lang-en|Microsoft Layer for Unicode}}, '''MSLU''') и обеспечивает поддержку Юникода на указанных старых платформах. Это дополнение включает в себя [[DLL|динамическую библиотеку]] unicows.dll (всего 240 [[килобайт|Кбайт]]), содержащую юникодовые версии (те, что с буквой W на конце) всех основных функций [[Microsoft Windows API|Windows API]]. В результате на старых операционных системах Windows стало возможно запускать как старые, так и новые программы, рассчитанные на использование Юникода.
В [[2001]] году корпорация Майкрософт выпустила специальное дополнение к своим старым операционным системам [[Microsoft Windows 95|Windows 95]], [[Microsoft Windows 98|Windows 98]] и [[Microsoft Windows Me|Windows Me]]. Дополнение называется «Слой Майкрософт для Юникода» ({{lang-en|Microsoft Layer for Unicode}}, '''MSLU''') и обеспечивает поддержку Юникода на указанных старых платформах. Это дополнение включает в себя [[DLL|динамическую библиотеку]] unicows.dll (всего 240 [[килобайт|Кбайт]]), содержащую юникодовые версии (те, что с буквой W на конце) всех основных функций [[Microsoft Windows API|Windows API]]. В результате на старых операционных системах Windows стало возможно запускать как старые, так и новые программы, рассчитанные на использование Юникода.

Версия от 09:56, 28 сентября 2008

Одной из первых компаний, последовательно внедрявших Юникод, была МайкрософтWindows NT была первой операционной системой, использовавшей Юникод в системных вызовах. Было выбрано двухбайтное представление символов (UCS-2); начиная с Windows 2000, возможно представление символов дополнительных плоскостей с помощью суррогатных пар UTF-16.

Современные операционные системы 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»), потому что в этом случае при неверном распознавании кодировки будет отображаться целая строка иероглифов.[1].

Примечания

  1. Tim Lesher. this api can break (англ.). Aftermarket Pipes (14 июня 2006). Дата обращения: 29 февраля 2008.

См. также

Ссылки