Кодовая страница Windows - Windows code page
Кодовые страницы Windows представляют собой наборы символов или кодовые страницы (известный как кодировки символов в других операционных системах) используется в Майкрософт Виндоус с 1980-х и 1990-х годов. Кодовые страницы Windows были постепенно заменены, когда Юникод был реализован в Windows,[нужна цитата ] хотя они по-прежнему поддерживаются как в Windows, так и на других платформах, и применяются, когда Альтернативный код используются ярлыки.
В системах Windows есть две группы кодовых страниц: OEM и собственные кодовые страницы Windows («ANSI»). Кодовые страницы в обеих этих группах расширенный ASCII кодовые страницы.
Кодовая страница ANSI
Псевдоним (а) | ANSI (неверное название) |
---|---|
Стандарт | Стандарт кодирования WHATWG |
Расширяется | US-ASCII |
Предшествует | ISO 8859 |
Преемник | Unicode UTF-16 (в Win32 API) |
Кодовые страницы ANSI (официально называемые "кодовые страницы Windows"[1] после того, как Microsoft приняла прежний термин как неправильное[2]) используются для нативного не-Unicode (скажем, байт ориентированный ) приложения, использующие графический интерфейс пользователя в системах Windows. "ANSI" - неправильное название, потому что его поведение не совсем соответствует ANSI стандарт[который? ] и потому, что в эти 8-битные кодовые страницы включены некоторые кодировки, отличные от стандартов ANSI.[нужна цитата ]
Большинство устаревших кодовых страниц "ANSI" имеют номера кодовых страниц в шаблоне 125x. Тем не мение, 874 (Тайский) и многобайтовые кодовые страницы ANSI Восточной Азии (932, 936, 949, 950 ), все из которых также используются как кодовые страницы OEM, пронумерованы для соответствия аналогичным (но не идентичным) кодировкам IBM. Пока кодовая страница 1258 также используется как кодовая страница OEM, она является оригинальной для Microsoft, а не расширением существующей кодировки. IBM присвоила свои собственные, разные номера для вариантов Microsoft, они приведены для справки в списках ниже, где это применимо.
Все кодовые страницы Windows 125x, а также 874 и 936 помечены Управление по присвоению номеров в Интернете (IANA) как "Windows-номер", хотя" Windows-936 "рассматривается как синоним"ГБК Вместо этого кодовая страница Windows 932 обозначается как «Windows-31J».[3]
Кодовые страницы ANSI Windows, и особенно кодовая страница 1252, были так называемыми, поскольку якобы основывались на черновиках, представленных или предназначенных для ANSI. Однако ANSI и ISO не стандартизировали ни одну из этих кодовых страниц. Вместо этого они либо:[2]
- Расширения стандартных наборов, таких как ISO 8859 и различные национальные стандарты (например, Окна-1252 против. ISO-8859-1 ),
- Их основные модификации (делающие их несовместимыми в разной степени, например Окна-1250 против. ISO-8859-2 )
- Отсутствие параллельного кодирования (например, Окна-1257 против. ISO-8859-4; ISO-8859-13 был введен намного позже). Также, Окна-1251 не следует ни стандартизированным ISO ISO-8859-5 ни господствовавшие тогда КОИ-8.
Microsoft назначила около двенадцати из типография и деловых персонажей (в частности, знак евро, €) в CP1252 в кодовые точки 0x80–0x9F, которые в ISO 8859 присвоены Коды управления C1. Эти назначения также присутствуют во многих других кодовых страницах ANSI / Windows в тех же кодовых точках. Windows не использовала управляющие коды C1, поэтому это решение не имело прямого влияния на пользователей Windows. Однако при включении в файл, передаваемый на совместимую со стандартами платформу, такую как Unix или MacOS, информация была невидимой и потенциально опасной.
Кодовая страница OEM
В Кодовые страницы OEM (производитель оригинального оборудования ) используются Консоль Win32 приложений, и виртуальный DOS, и может считаться пережитком ДОС и оригинал IBM PC архитектура. Отдельный набор кодовых страниц был реализован не только из-за совместимости, но и потому, что шрифты VGA (и потомков) оборудования предложить кодировку символы рисования линий быть совместимым с кодовая страница 437. Большинство кодовых страниц OEM имеют много общих кодовых точек, особенно для небуквенных символов, со второй (не ASCII) половиной CP437.
Типичная кодовая страница OEM во второй половине даже приблизительно не похожа ни на одну кодовую страницу ANSI / Windows. Тем не менее, две однобайтовые кодовые страницы фиксированной ширины (874 для Тайский и 1258 для вьетнамский ) и четыре многобайтовых CJK кодовые страницы (932, 936, 949, 950 ) используются как кодовые страницы OEM и ANSI. Кодовая страница 1258 использует сочетание диакритических знаков, поскольку вьетнамский требует более 128 буквенно-диакритических комбинаций. Это в отличие от VISCII, который заменяет некоторые C0 (например, ASCII) управляющие коды.
История
Первоначально компьютерные системы и языки системного программирования не делали различия между символы и байты: для сегментные скрипты используется в большинстве стран Африки, Северной и Южной Америки, Южной и Юго-Восточной Азии, Ближнего Востока и Европы, для символа требуется всего один байт, но для символа требуется два или более байта. идеографический наборы, используемые во всем мире. Впоследствии это привело к большой путанице. Программное обеспечение и системы Microsoft до Windows NT Строка являются примерами этого, потому что они используют кодовые страницы OEM и ANSI, которые не делают различий.
С конца 1990-х годов программное обеспечение и системы приняли Unicode в качестве предпочтительного формата хранения; эта тенденция улучшилась благодаря повсеместному внедрению XML, который обеспечивает более адекватный механизм маркировки используемой кодировки.[4] Последние продукты Microsoft и прикладные программные интерфейсы внутренне использовать Unicode,[нужна цитата ] но многие приложения и API продолжают использовать кодировку по умолчанию «локали» компьютера при чтении и записи текстовых данных в файлы или стандартный вывод.[нужна цитата ] Таким образом, файлы могут быть разборчивы и понятны в одной части мира, но неразборчивы. моджибаке в другой.
UTF-8, UTF-16
Microsoft решила принять 16-битный (двухбайтовый) UTF-16 система для всех операционные системы начиная с Windows NT. Этот метод уникальным образом кодирует все символы Юникода в Базовая многоязычная плоскость и 32-битный (четырехбайтовый) код для других, но остальная часть отрасли[требуется разъяснение ] выбрал UTF-8 (который использует один байт для 7-битного ASCII набор символов, два или три байта для других символов в BMP и четыре байта для остатка). С Windows 10 версии 1803, Компьютеры Windows можно настроить так, чтобы разрешить UTF-8 в качестве кодовой страницы "ANSI" и OEM.[5]
Список
Существуют следующие кодовые страницы Windows:
Windows-125x серии
Все эти девять кодовых страниц расширенный ASCII 8 бит SBCS кодировки и были разработаны Microsoft для использования в качестве кодовых страниц ANSI в Windows. Они широко известны по своим зарегистрированным в IANA[6] имена как windows- <номер>
, но их также иногда называют cp <число>
, «cp» для «кодовой страницы». Все они используются как кодовые страницы ANSI; Windows-1258 также используется как кодовая страница OEM.
Я БЫ | Описание | Связь с ISO 8859 или другими установленными кодировками |
---|---|---|
1250[7][8] | латинский 2 / Центральноевропейская | Похожий на ISO-8859-2 но перемещает несколько символов, включая несколько букв. |
1251[9][10] | Кириллица | Несовместимо с обоими ISO-8859-5 и КОИ-8. |
1252[11][12] | Латиница 1 / Западноевропейский | Надмножество ISO-8859-1 (без элементов управления C1). Письменный репертуар соответственно похож на CP850. |
1253[13][14] | Греческий | Похожий на ISO 8859-7 но перемещает несколько символов, включая букву. |
1254[15][16] | турецкий | Надмножество ISO 8859-9 (без элементов управления C1). |
1255[17][18] | иврит | Почти надмножество ISO 8859-8, но с двумя несовместимыми изменениями пунктуации. |
1256[19][20] | арабский | Не совместим с ISO 8859-6; скорее OEM Кодовая страница 708 является ISO 8859-6 (ASMO 708) надмножество. |
1257[21][22] | Балтийский | Нет ISO 8859-4; позже ISO 8859-13 тесно связан, но с некоторыми различиями в доступной пунктуации. |
1258[23][24] | вьетнамский (также OEM) | Не имеет отношения к VSCII или же VISCII, использует меньше основных символов с комбинированными диакритическими знаками. |
Кодовые страницы DOS
Они также основаны на ASCII. Большинство из них включены для использования в качестве кодовых страниц OEM; кодовая страница 874 также используется как кодовая страница ANSI.
- 437 - IBM PC US, 8-битный SBCS расширенный ASCII.[25] Известный как OEM-US, кодировка основного встроенного шрифта видеокарт VGA.
- 708 - арабский, расширенный ISO 8859-6 (ASMO 708)
- 720 - Арабский, сохраняя символы рисования прямоугольников на их обычных местах
- 737 - «MS-DOS греческий». Сохраняет все символы рисования прямоугольников. Популярнее, чем 869.
- 775 - «MS-DOS Baltic Rim»
- 850 - «MS-DOS Latin 1». Полный (переработанный) репертуар ISO 8859-1.
- 852 - «MS-DOS Latin 2»
- 855 - «Кириллица MS-DOS». В основном используется для Южнославянские языки. Включает в себя (реорганизованный) репертуар ISO-8859-5. Не путать с cp866.
- 857 - «MS-DOS Турецкий»
- 858 - западноевропейские со знаком евро
- 860 - «MS-DOS Portuguese»
- 861 - "Исландский MS-DOS"
- 862 - «MS-DOS на иврите»
- 863 - "MS-DOS Французская Канада"
- 864 - арабский
- 865 - «MS-DOS Nordic»
- 866 - "MS-DOS Кириллица русская", cp866. Единственная кодовая страница исключительно OEM (а не ANSI или и то, и другое), включенная в качестве устаревшей кодировки в стандарт кодирования WHATWG для HTML5.
- 869 - «MS-DOS Greek 2», IBM869. Полный (переработанный) репертуар ISO 8859-7.
- 874 – Тайский, также используется в качестве кодовой страницы ANSI, расширяет ISO 8859-11 (и поэтому ТИС-620 ) с несколькими дополнительными символами из Windows-1252. Соответствует кодовой странице IBM 1162 (IBM-874 аналогична, но имеет другие расширения).
Многобайтовые кодовые страницы Восточной Азии
Часто они лишь частично совпадают с кодовыми страницами IBM с одним и тем же номером: кодовые страницы 932, 936 и 949 отличаются от кодовых страниц IBM с тем же номером, тогда как Windows-951 как часть кладж, не имеет отношения к IBM-951. Эквивалентные кодовые страницы IBM приведены во втором столбце. Кодовые страницы 932, 936, 949 и 950/951 используются в качестве кодовых страниц как ANSI, так и OEM в рассматриваемых регионах.
Я БЫ | Эквивалент IBM | Язык | Кодирование | Использовать |
---|---|---|---|---|
932 | 943[26] | Японский | Shift JIS (Вариант Microsoft) | ANSI / OEM (Япония) |
936 | 1386 | Упрощенный китайский) | ГБК | ANSI / OEM (КНР, Сингапур) |
949 | 1363 | Корейский | Единый код хангыль | ANSI / OEM (Республика Корея) |
950 | 1370,[27] 1373[28] | Китайский традиционный) | Big5 (Вариант Microsoft) | ANSI / OEM (Тайвань, Гонконг) |
951 | 5471[29] | Китайский традиционный) | Big5-HKSCS (Издание 2001 г.) | ANSI / OEM (Гонконг, 98 / NT4 / 2000 / XP с патчем HKSCS) |
Несколько дополнительных многобайтовых кодовых страниц поддерживаются для декодирования или кодирования с использованием библиотек операционной системы, но не используются в качестве системного кодирования ни в одной локали.
Я БЫ | Эквивалент IBM | Язык | Кодирование | Использовать |
---|---|---|---|---|
1361 | - | Корейский | Йохаб (KS C 5601-1992 приложение 3) | Преобразование |
20000 | 964 | Китайский традиционный) | CNS 11643 | Преобразование |
20001 | - | Китайский традиционный) | TCA | Преобразование |
20002 | - | Китайский традиционный) | Big5 (вариант ETEN) | Преобразование |
20003 | ? | Китайский традиционный) | IBM 5500 | Преобразование |
20004 | - | Китайский традиционный) | Телетекст | Преобразование |
20005 | - | Китайский традиционный) | Ван | Преобразование |
20932 | 954 (примерно) | Японский | EUC-JP | Преобразование |
Кодовые страницы EBCDIC
- 37 - IBM EBCDIC США-Канада, 8-битный SBCS[30]
- 500 - латиница 1
- 870 - IBM870
- 875 - cp875
- 1026 - EBCDIC Турецкий
- 1047 - IBM01047 - Латиница 1
- 1140 - IBM01141
- 1141 - IBM01141
- 1142 - IBM01142
- 1143 - IBM01143
- 1144 - IBM01144
- 1145 - IBM01145
- 1146 - IBM01146
- 1147 - IBM01147
- 1148 - IBM01148
- 1149 - IBM01149
- 20273 - EBCDIC Германия
- 20277 - EBCDIC Дания / Норвегия
- 20278 - EBCDIC Финляндия / Швеция
- 20280 - EBCDIC Италия
- 20284 - EBCDIC Латинская Америка / Испания
- 20285 - EBCDIC Соединенное Королевство
- 20290 - EBCDIC японский
- 20297 - EBCDIC Франция
- 20420 - EBCDIC арабский
- 20423 - EBCDIC Греческий
- 20424 - x-EBCDIC-KoreanExtended
- 20833 - Корейский
- 20838 - EBCDIC тайский
- 21025 - EBCDIC кириллица
- 20871 - EBCDIC исландский
- 20880 - EBCDIC кириллица
- 20905 - EBCDIC Турецкий
- 21027 - японский EBCDIC (неполный,[31] устарело)[32]
- 1200 – Unicode (BMP ISO 10646, UTF-16LE ). Доступно только для управляемых приложений [33]
- 1201 – Unicode (UTF-16BE ). Доступно только для управляемых приложений [33]
- 12000 – UTF-32. Доступно только для управляемых приложений [33]
- 12001 – UTF-32 С прямым порядком байтов. Доступно только для управляемых приложений [33]
- 65000 – Unicode (UTF-7 )
- 65001 – Unicode (UTF-8 )
Кодовые страницы совместимости с Macintosh
- 10000 - Apple Macintosh Роман
- 10001 - Apple Macintosh на японском языке
- 10002 - Apple Macintosh Chinese (традиционный) (BIG-5)
- 10003 - Apple Macintosh корейский
- 10004 - Apple Macintosh арабский
- 10005 - Apple Macintosh на иврите
- 10006 - Apple Macintosh греческий
- 10007 - Apple Macintosh кириллица
- 10008 - Apple Macintosh китайский (упрощенный) (GB 2312)
- 10010 - Apple Macintosh на румынском языке
- 10017 - Apple Macintosh украинский
- 10021 - Apple Macintosh Thai
- 10029 - Apple Macintosh Roman II / Центральная Европа
- 10079 - Исландский Apple Macintosh
- 10081 - Apple Macintosh турецкий
- 10082 - Apple Macintosh хорватский
Кодовые страницы ISO 8859
- 28591 – ISO-8859-1 - Latin-1 (эквивалент IBM: 819)
- 28592 – ISO-8859-2 - Латиница-2
- 28593 – ISO-8859-3 - Latin-3 или южноевропейский
- 28594 – ISO-8859-4 - Latin-4 или североевропейский
- 28595 – ISO-8859-5 - латиница / кириллица
- 28596 – ISO-8859-6 - латинский / арабский
- 28597 – ISO-8859-7 - латинский / греческий
- 28598 – ISO-8859-8 - латынь / иврит
- 28599 – ISO-8859-9 - Latin-5 или турецкий
- 28600 – ISO-8859-10 - Латиница-6
- 28601 – ISO-8859-11 - латинский / тайский
- 28602 – ISO-8859-12 – зарезервировано для латыни / деванагари, но заброшено (не поддерживается)
- 28603 – ISO-8859-13 - Latin-7 или Baltic Rim
- 28604 – ISO-8859-14 - Latin-8 или кельтский
- 28605 – ISO-8859-15 - Латиница-9
- 28606 – ISO-8859-16 - Latin-10 или Юго-Восточная Европа
- 38596 – ISO-8859-6-я - Латинский / арабский (логический двунаправленный порядок)
- 38598 – ISO-8859-8-я - Латинский / иврит (логический двунаправленный порядок)
Кодовые страницы ITU-T
Кодовые страницы KOI8
Другие кодовые страницы
- 20924 - IBM00924 - IBM EBCDIC Latin 1 / Открытая система (1047 + символ евро)
- 20936 - x-cp20936 - упрощенный китайский (GB2312); Китайский упрощенный (GB2312-80)
- 20949 - x-cp20949 - корейский Wansung
Проблемы, возникающие при использовании кодовых страниц
Microsoft настоятельно рекомендует использовать Unicode в современных приложениях, но многие приложения или файлы данных по-прежнему зависят от устаревших кодовых страниц.
- Программы должны знать, какую кодовую страницу использовать, чтобы правильно отображать содержимое файлов (до Unicode). Если программа использует неправильную кодовую страницу, она может отображать текст как моджибаке.
- Используемая кодовая страница может отличаться на разных машинах, поэтому файлы (до Unicode), созданные на одной машине, могут быть нечитаемыми на другой.
- Данные часто неправильно помечены кодовой страницей или вообще не помечены, что затрудняет определение правильной кодовой страницы для чтения данных.
- Эти кодовые страницы Microsoft в разной степени отличаются от некоторых стандартов и реализаций других поставщиков. Это не проблема Microsoft как таковой, как это бывает со всеми поставщиками, но отсутствие согласованности делает взаимодействие с другими системами в некоторых случаях ненадежным.
- Использование кодовых страниц ограничивает набор символов, которые могут использоваться.
- Символы, представленные в неподдерживаемой кодовой странице, могут быть преобразованы в вопросительные знаки (?) Или другие заменяющие символы или в более простую версию (например, удаление акцентов с буквы). В любом случае исходный персонаж может быть утерян.
Смотрите также
- AppLocale - утилита для запуска приложений, не поддерживающих Unicode (на основе кодовых страниц), в языковом стандарте по выбору пользователя.
Рекомендации
- ^ Кодовые страницы, MSDN
- ^ а б MSDN: Глоссарий терминов
- ^ Список IANA Наборы символов
- ^ «Extensible Markup Language (XML) 1.1 (второе издание): кодировки символов». W3C. 29 сентября 2006 г.. Получено 5 октября 2020.
- ^ хилом (2017-11-14). «Windows 10 の Insider Preview で シ ス テ ム ロ ー ル を UTF-8 に す る オ プ シ が 追加 さ れ る» [Возможность сделать UTF-8 системной локалью, добавленной в Windows 10 Insider Preview]. ス ラ ド (на японском языке). Получено 2018-05-10.
- ^ «Наборы символов». IANA.
- ^ Microsoft. «Окна 1250». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01250". Получено 2014-07-06.
- ^ Microsoft. «Окна 1251». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01251". Получено 2014-07-06.
- ^ Microsoft. «Окна 1252». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01252". Получено 2014-07-06.
- ^ Microsoft. «Окна 1253». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01253". Получено 2014-07-06.
- ^ Microsoft. «Окна 1254». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01254". Получено 2014-07-06.
- ^ Microsoft. «Окна 1255». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01255". Получено 2014-07-06.
- ^ Microsoft. «Окна 1256». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01256". Получено 2014-07-06.
- ^ Microsoft. «Окна 1257». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01257". Получено 2014-07-06.
- ^ Microsoft. «Окна 1258». Получено 2014-07-06.
- ^ IBM. "Информационный документ кодовой страницы SBCS CPGID 01258". Получено 2014-07-06.
- ^ IBM. «Информационный документ кодовой страницы SBCS - CPGID 00437». Получено 2014-07-04.
- ^ «IBM-943 и IBM-932». Центр знаний IBM. IBM.
- ^ «Информационный документ CCSID 1370». Архивировано из оригинал on 2016-03-27.
- ^ "Converter Explorer: ibm-1373_P100-2002". Демонстрация ICU. Международные компоненты для Unicode.
- ^ «Идентификаторы кодированного набора символов - CCSID 5471». IBM Глобализация. IBM. Архивировано из оригинал 2014-11-29.
- ^ IBM. «Информационный документ кодовой страницы SBCS - CPGID 00037». Получено 2014-07-04.
- ^ Стил, Шон (12 сентября 2005 г.). "Кодовая страница 21027" Расширенный / Расширенный строчный алфавит"". MSDN.
- ^ Идентификаторы кодовой страницы
- ^ а б c d Список идентификаторов кодовых страниц
- ^ а б c d е «Идентификаторы кодовой страницы». Сеть разработчиков Microsoft. Microsoft. 2014. В архиве из оригинала от 19.06.2016. Получено 2016-06-19.
- ^ а б c d е «Веб-кодировки - Internet Explorer - Кодировки». WHATWG Wiki. 2012-10-23. В архиве из оригинала на 20.06.2016. Получено 2016-06-20.
- ^ Фоллер, Антонин (2014) [2011]. "Западноевропейская (IA5) кодировка - кодировки Windows". WUtils.com - онлайн-утилита и справка. Программное обеспечение Motobit. В архиве из оригинала на 20.06.2016. Получено 2016-06-20.
- ^ Фоллер, Антонин (2014) [2011]. "Немецкая (IA5) кодировка - кодировки Windows". WUtils.com - онлайн-утилита и справка. Программное обеспечение Motobit. В архиве из оригинала на 20.06.2016. Получено 2016-06-20.
- ^ Фоллер, Антонин (2014) [2011]. «Шведская (IA5) кодировка - кодировки Windows». WUtils.com - онлайн-утилита и справка. Программное обеспечение Motobit. В архиве из оригинала на 20.06.2016. Получено 2016-06-20.
- ^ Фоллер, Антонин (2014) [2011]. «Норвежская (IA5) кодировка - кодировки Windows». WUtils.com - онлайн-утилита и справка. Программное обеспечение Motobit. В архиве из оригинала на 20.06.2016. Получено 2016-06-20.
- ^ Фоллер, Антонин (2014) [2011]. «Кодировка US-ASCII - кодировки Windows». WUtils.com - онлайн-утилита и справка. Программное обеспечение Motobit. В архиве из оригинала на 20.06.2016. Получено 2016-06-20.
- ^ Нечаев, Валентин (2013) [2001]. «Обзор вселенной 8-битных кодировок кириллицы». В архиве из оригинала от 05.12.2016. Получено 2016-12-05.
внешняя ссылка
- Справочник по API поддержки национальных языков (NLS). Таблица, показывающая кодовые страницы ANSI и OEM для каждого языка (из веб-архива, поскольку Microsoft удалила исходную страницу)
- Регистрация имен с кодировкой IANA
- Таблица сопоставления Unicode для кодовых страниц Windows
- Сопоставления кодовых страниц Windows в Юникоде с "наилучшим соответствием"