Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Windows-31J )
Перейти к навигации Перейти к поиску

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

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

Windows-31J - это наиболее часто используемая японская кодировка, отличная от UTF-8 / Unicode, в Интернете. На самом деле Shift JIS - это гораздо более заявленная кодировка, но по стандартам W3C / WHATWG HTML кодировки объявлены одинаковыми, и хотя последнее имя используется в стандартах, определенных для декодирования первого. См. Статистику на странице Shift JIS .

Терминология [ править ]

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

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

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

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

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

Отличия от стандартного Shift JIS [ править ]

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

Различия в двухбайтовых символах [ править ]

Диаграмма Эйлера для сравнения репертуаров 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), набор расширений IBM NEC (строки с 89 по 92), и расширения IBM (строки 115–119) ", [7] в дополнение к выделению некоторого пространства кодирования для определения конечного пользователя . [12] Это также отличается от IBM-932 , который не включает расширения NEC или выбор NEC. [4]

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

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

Различия в однобайтовых символах [ править ]

Windows-932 включает стандартные 7-битные сопоставления ASCII для однобайтовых последовательностей со старшим битом, установленным в 0. Следовательно, коды 0x5C и 0x7E отображаются в Unicode как U + 005C REVERSE SOLIDUS ( \, обратная косая черта ) и U + 007E TILDE ( ~) соответственно, [18] [19] [15], как они есть в ASCII ( ISO-646 -US). Это также делается стандартом кодирования W3C / WHATWG. [20] Напротив, 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. [15]

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

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

Макет [ править ]


См. Также [ править ]

  • LMBCS-16

Ссылки [ править ]

  1. ^ Сивонен, Анри. «Ошибка 27851 - Добавьте MS932 как метку Shift_JIS» . w3.org Bug Tracker .
  2. ^ a b c d e "Converter Explorer: ibm-943_P15A-2003 (псевдоним windows-31j)" . Международные компоненты для Unicode: демонстрация ICU .
  3. Аоки, Осаму. «Глава 11. Преобразование данных» . Справочник Debian . Debian.
  4. ^ a b c d e "IBM-943 и IBM-932" . Центр знаний IBM . IBM.
  5. ^ a b «Идентификаторы кодированного набора символов - CCSID 943» . IBM Globalization . IBM. Архивировано из оригинала на 2016-03-15.
  6. ^ a b c "Converter Explorer: ibm-943_P130-1999" . Международные компоненты для Unicode: демонстрация ICU .
  7. ^ a b c «Наборы символов» . IANA.
  8. ^ «Свойство Encoding.WindowsCodePage - .NET Framework (текущая версия)» . MSDN . Microsoft.
  9. ^ ван Кестерен, Энн . «4.2. Имена и ярлыки» . Стандарт кодирования . WHATWG.
  10. ^ ван Кестерен, Энн . «5. Указатели (§ Указатель jis0208)» . Стандарт кодирования . WHATWG.
  11. ^ a b «7.2.3. Стандартные кодировки» . Документация по Python 3.6 . Фонд программного обеспечения Python . Проверено 19 сентября 2017 года .
  12. ^ Каплан, Майкл S (2007-05-26). «PUA за пределами Unicode» . Разбираемся со всем .
  13. ^ Японский комитет промышленных стандартов (2004-04-13). Набор японских графических символов для обмена информацией, плоскость 1 (PDF) . ITSCJ / IPSJ . ISO-IR -233.
  14. ^ ван Кестерен, Энн . «Индекс jis0208 визуализации» . Стандарт кодирования . WHATWG.
  15. ^ a b c d «Неоднозначности при преобразовании Shift-JIS в Unicode (ненормативный)» . Японский профиль XML . W3C.
  16. ^ "Converter Explorer: ibm-943_P15A-2003: начальный байт 0x81" . Демонстрация интенсивной терапии . Международные компоненты для Unicode.
  17. ^ "Converter Explorer: ibm-943_P130-1999: начальный байт 0x81" . Демонстрация интенсивной терапии . Международные компоненты для Unicode.
  18. ^ a b "CP932.TXT" . Консорциум Unicode.
  19. ^ a b «Ведущий байт NULL - кодовая страница 932» . Microsoft.
  20. ^ ван Кестерен, Энн . «12.3.1. Декодер Shift_JIS» . Стандарт кодирования . WHATWG. Если байт является байтом ASCII или 0x80, вернуть кодовую точку, значение которой - байт.
  21. ^ a b Каплан, Майкл С. (17 сентября 2005 г.). "Когда обратная косая черта не является обратной косой чертой?" . Разбираемся со всем .
  22. ^ a b "CP00897.txt" . IBM. Архивировано 12 января 2019 года . Проверено 24 сентября 2017 .
  23. ^ «Идентификаторы кодовой страницы - CP 00897» . IBM Globalization . IBM. Архивировано из оригинала на 2016-03-17.

Внешние ссылки [ править ]

Связанные с Microsoft [ править ]

  • Справочник Microsoft по кодовой странице Windows 932
  • Файл кодовой страницы для MS932
  • Отображение кодовой страницы 932 Microsoft в Unicode
  • Демонстрация кодовой страницы ICU 943C (ibm-943_P15A-2003 псевдоним windows-31j)

Связанные с IBM [ править ]

  • Документация IBM о кодовой странице 943
  • Демонстрация кодовой страницы ICU 943 (ibm-943_P130-1999)
  • Отображение ICU для ibm-943_P130-1999 в Unicode