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 . Это привело к тому, что стандарт HTML WHATWG стал рассматривать метки кодировки shift_jisкак windows-31jвзаимозаменяемые и использовать вариант Windows для кодера и декодера «Shift_JIS». [1]

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

Вариант Microsoft Shift JIS известен просто как «Кодовая страница 932» в Microsoft Windows, однако это неоднозначно, поскольку кодовая страница IBM 932 , а также вариант 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] в Международных компонентах 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) для JIS X 0208, определенного Shift JIS, не распознавая Windows-31Jметку. [12]

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

Отличия от стандартного Shift 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), выбор расширений IBM NEC (строки с 89 по 92), и расширения IBM (строки с 115 по 119)», [9] в дополнение к выделению некоторого пространства для кодирования для определения конечного пользователя . [13] Это также отличается от IBM-932 , который не включает расширения NEC или выбор NEC. [5]

Расширения IBM были разработаны для кодирования символов из японского репертуара IBM DBCS-Host , который изначально отсутствовал в JIS X 0208; Знак «потому что» ∵ и знак «н廬 были позже добавлены в сам JIS X 0208 в 1983 году, и Microsoft включает их в местоположения расширений, а также в их местоположения 1983 года. [14] Расширения NEC также кодируют весь репертуар IBM, но в отдельном расширении в сетке JIS X 0208 94×94 (в строках 89–92, помимо символов, уже включенных в строку 13 NEC ), вместо использования Сдвинуть коды 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» в International Components for Unicode (ICU), [3] за исключением незначительного изменения порядка нескольких управляющих символов C0 .

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

Макет


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

Рекомендации

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

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

связанные с Microsoft

связанные с IBM