stringtranslate.com

Кодовая страница 932 (Microsoft Windows)

Кодовая страница Microsoft Windows 932 (сокращенно MS932 , [2] [3] Windows-932 [3] или неоднозначно CP932 [4] ), также называемая Windows-31J среди других названий (см. § Терминология ниже), является кодовой страницей Microsoft Windows для японского языка , которая является расширенным вариантом японской кодировки символов Shift JIS . Она содержит стандартные 7-битные коды ASCII , а японские символы обозначаются тем, что старший бит первого байта устанавливается в 1. Некоторые кодовые точки на этой странице требуют второго байта, поэтому символы используют либо 8, либо 16 бит для кодирования.

IBM предлагает те же расширенные двухбайтовые коды в своей кодовой странице 943 ( IBM-943 или CP943 ), [5] которая представляет собой комбинацию однобайтовой кодовой страницы 897 и двухбайтовой кодовой страницы 941. [ 6]

Windows-31J является наиболее используемой не- UTF-8 /Unicode японской кодировкой в ​​Интернете. Однако многие люди и программные пакеты, включая библиотеки Microsoft, [7] объявляют кодировку Shift JIS для данных Windows-31J, хотя она включает некоторые дополнительные символы, а некоторые из существующих символов отображаются в Unicode по-разному. Это привело к тому, что стандарт WHATWG HTML стал рассматривать метки кодировки shift_jisи windows-31jвзаимозаменяемо и использовать вариант Windows для своего кодировщика и декодера "Shift_JIS". [1]

Терминология

Вариант Shift JIS от Microsoft известен просто как «кодовая страница 932» в Microsoft Windows, однако это двусмысленно, поскольку кодовая страница 932 от IBM , также являющаяся вариантом Shift JIS, не имеет двухбайтовых расширений поставщиков NEC и выбранных NEC, которые присутствуют в варианте Microsoft (хотя оба включают расширения IBM) и сохраняет порядок JIS X 0208 1978 года. [5]

Кодовая страница IBM 943 (или «IBM-943») включает те же двухбайтовые коды, что и кодовая страница Windows 932. [5] Версия Microsoft близко соответствует кодировке, называемой ibm-943_P15A-2003 (с псевдонимами, включая CP943C и Windows-932 ) [3] в International Components for Unicode (ICU). Существует также вторая кодировка ICU, называемая ibm-943_P130-1999 , [8] которая использует другие однобайтовые отображения, которые более точно соответствуют определениям кодовой страницы IBM. (Подробности см. в § Различия однобайтовых символов ниже.)

Кодовая страница Windows 932 зарегистрирована в IANA как Windows-31J . [9] Метка «Windows-31J» принадлежит IANA и не признаётся Microsoft, которая исторически использовала вместо неё «shift_jis». [7] Стандарт кодирования W3C / WHATWG, используемый HTML5, рассматривает метку « shift_jis » как взаимозаменяемую с «windows-31j» с намерением «совместимости с развёрнутым содержимым» [10] и соответствует кодовой странице Windows 932 [1] (включая «ранее фирменные расширения от IBM и NEC»). [11]

Кодовая страница Windows 932 также называется MS_Kanji , [3] [12] хотя IANA рассматривает MS_Kanji как псевдоним для стандартного Shift JIS. [9] Python , например, использует метку MS-Kanji(или cp932) для Windows-932 и метку Shift_JIS(или sjis) для Shift JIS, определенного в JIS X 0208, не распознавая Windows-31Jметку. [12]

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

Отличия от стандартной смены JIS

Windows-31J часто ошибочно принимают за стандартный Shift JIS (как определено в JIS X 0208 :1997, Приложение 1): хотя они и похожи, различие имеет важное значение для программистов, желающих избежать mojibake .

Различия в двухбайтовых символах

Диаграмма Эйлера, сравнивающая репертуары JIS X 0208 , JIS X 0212 , JIS X 0213 , Windows-31J, стандартный репертуар Microsoft и Unicode

В дополнение к стандартным символам JIS X 0201 :1997 и JIS X 0208 :1997, Windows-31J включает несколько расширений JIS X 0208, а именно « специальные символы NEC (строка 13), выбор NEC расширений IBM (строки 89–92) и расширения IBM (строки 115–119)», [9] в дополнение к выделению некоторого пространства кодировки для определения конечного пользователя . [13] Это также отличается от IBM-932 , который не включает расширения NEC или выбор NEC. [5]

Расширения IBM были разработаны для кодирования символов из репертуара IBM Japanese DBCS-Host , которые изначально отсутствовали в JIS X 0208; знак «потому что» ∵ и знак «н廬 были позже добавлены в сам JIS X 0208 в 1983 году, и Microsoft включает их в местоположения расширения, а также в их местоположения в 1983 году. [14] Расширения NEC также кодируют весь репертуар IBM, но в отдельном расширении в сетке 94×94 JIS X 0208 (в строках 89–92, помимо символов, уже включенных в строку 13 NEC ), вместо использования кодов Shift JIS за пределами диапазона JIS X 0208; кодовая страница Windows 932 включает эти 388 символов в обоих местоположениях. [14] В результате знаки «потому что» и «не» кодируются три раза.

Некоторые из этих представлений впоследствии использовались для различных символов JIS X 0213 и Shift JIS-2004 . Например, сравните строку 89 в JIS X 0213 (начинается с 硃, 硎, 硏…) [15] со строкой 89, используемой JIS X 0208 с расширениями IBM/NEC (начинается с 纊, 褜, 鍈…). [16] Следовательно, Shift JIS-2004 несовместим с Windows-31J.

В дополнение к вышесказанному, Microsoft использует различное (но визуально похожее) сопоставление Unicode для нескольких двухбайтовых знаков пунктуации по сравнению со стандартным Shift JIS, например, волнистое тире , сопоставленное с U+FF5E , а не с U+301C, [17] за которым следует ibm-943_P15A-2003 [18], но не ibm-943_P130-1999, [19] и использование другого сопоставления для двухбайтовой обратной косой черты. [17]

Различия в однобайтовых символах

Windows-932 включает стандартные 7-битные отображения ASCII для однобайтовых последовательностей со старшим битом, установленным в 0. Таким образом, коды 0x5C и 0x7E отображаются в Unicode как U+005C REVERSE SOLIDUS ( \, обратная косая черта ) и U+007E TILDE ( ~) соответственно, [20] [21] [17] как они отображаются в ASCII ( ISO-646 -US). Это также делается стандартом кодирования W3C/WHATWG. [22] Напротив, 0x5C отображается как U+00A5 YEN SIGN ( ¥) в ISO-646-JP и, следовательно, JIS X 0201 , расширением которого является стандарт Shift JIS . Соответственно, Windows-31J избегает дублирования кодирования обратной косой черты, отображая двойной байт 0x815F в U+FF3C FULLWIDTH REVERSE SOLIDUS, тогда как стандартный Shift JIS отображает его в U+005C. [17]

Однако 0x5C в Windows-932 тем не менее считается знаком йены в определенных контекстах. [23] По этой причине во многих японских шрифтах U+005C отображается как символ йены, который обычно представляется как U+00A5, а не как обратная косая черта в соответствии с предлагаемым отображением Unicode. U+00A5 — это одностороннее наилучшее соответствие 0x5C в Windows-932. Однако код 0x5C в Windows-932 ведет себя как обратная косая черта (обратная косая черта) во всех отношениях (например, в путях к файлам в системах Windows), за исключением того, как он отображается некоторыми шрифтами, [23] и документация Microsoft для Windows-932 отображает 0x5C как обратную косую черту. [21] Это отображение [20] соответствует кодировке под названием «ibm-943_P15A-2003» в международных компонентах Unicode (ICU), [3] за исключением незначительного изменения порядка нескольких управляющих символов C0 .

IBM-943 , как и IBM-932 , [5] является надмножеством однобайтовой кодовой страницы 897 , [6] которая сопоставляет 0x5C с символом йены ( ¥), а 0x7E с верхней чертой ( ), [24] за этим следует кодировка с именем "ibm-943_P130-1999" в ICU. [8] Кодовая страница 897 (и, следовательно, также IBM-943 и IBM-932) также добавляет однобайтовые символы рисования прямоугольников, заменяющие определенные управляющие символы C0 , [24] однако они все еще могут рассматриваться как управляющие символы в зависимости от контекста, [25] и сопоставляются с управляющими символами в ICU. [8]

Макет


Смотрите также

Ссылки

  1. ^ abc Mozilla Foundation . "Значительные отличия от именования IANA". Crate encoding_rs . docs.rs.
  2. ^ Сивонен, Генри. «Ошибка 27851 — Добавить MS932 в качестве метки Shift_JIS». w3.org Bug Tracker .
  3. ^ abcde "Converter Explorer: ibm-943_P15A-2003 (псевдоним windows-31j)". Международные компоненты для Unicode: Демонстрация ICU .
  4. ^ Аоки, Осаму. "Глава 11. Преобразование данных". Справочник Debian . Debian.
  5. ^ abcde "IBM-943 и IBM-932". Центр знаний IBM . IBM.
  6. ^ ab "Идентификаторы кодированных наборов символов - CCSID 943". IBM Globalization . IBM. Архивировано из оригинала 2016-03-15.
  7. ^ ab "Encoding.WindowsCodePage Property - .NET Framework (текущая версия)". MSDN . Microsoft.
  8. ^ abc "Converter Explorer: ibm-943_P130-1999". Международные компоненты для Unicode: Демонстрация ICU .
  9. ^ abc "Наборы символов". IANA.
  10. ^ ван Кестерен, Энн . «4.2. Названия и метки». Стандарт кодирования . ЧТОРГ.
  11. ^ ван Кестерен, Энн . «5. Индексы (§ Индекс jis0208)». Стандарт кодирования . ЧТОРГ.
  12. ^ ab "7.2.3. Стандартные кодировки". Документация Python 3.6 . Python Software Foundation . Получено 19 сентября 2017 г.
  13. ^ Каплан, Майкл С. (2007-05-26). "PUA за пределами Unicode". Разбираемся во всем этом .
  14. ^ ab Lunde, Ken (2009). "Приложение E: Стандарты набора символов поставщика" (PDF) . Обработка информации CJKV: китайская, японская, корейская и вьетнамская вычислительная техника (2-е изд.). Севастополь, Калифорния : O'Reilly . ISBN 978-0-596-51447-1.
  15. ^ Японский комитет промышленных стандартов (2004-04-13). Японский набор графических символов для обмена информацией, Plane 1 (PDF) . ITSCJ/ IPSJ . ISO-IR -233.
  16. ^ ван Кестерен, Энн . «Индексная визуализация jis0208». Стандарт кодирования . ЧТОРГ.
  17. ^ abcd "Неоднозначности при преобразовании из Shift-JIS в Unicode (ненормативный)". XML Japanese Profile . W3C.
  18. ^ "Converter Explorer: ibm-943_P15A-2003: начальный байт 0x81". Демонстрация ICU . Международные компоненты для Unicode.
  19. ^ "Converter Explorer: ibm-943_P130-1999: начальный байт 0x81". Демонстрация ICU . Международные компоненты для Unicode.
  20. ^ ab "CP932.TXT". Консорциум Unicode.
  21. ^ ab "Ведущий байт NULL — Кодовая страница 932". Microsoft.
  22. ^ ван Кестерен, Энн . "12.3.1. Декодер Shift_JIS". Стандарт кодирования . WHATWG. Если байт является байтом ASCII или 0x80, вернуть кодовую точку, значение которой равно байту.
  23. ^ ab Каплан, Майкл С. (2005-09-17). "Когда обратная косая черта не является обратной косой чертой?". Разбираемся во всем этом .
  24. ^ ab "CP00897.txt". IBM.
  25. ^ "Идентификаторы кодовой страницы - CP 00897". IBM Globalization . IBM. Архивировано из оригинала 2016-03-17.

Внешние ссылки

Microsoft, связанный с

IBM-связанный