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

Кодовая страница Windows 932
MIME / IANAОкна-31J
Псевдоним (а)CP943C
Язык (и)Японский
СтандартСтандарт кодирования WHATWG (как "Shift_JIS")
КлассификацияРасширенный ASCII,[а] кодирование с переменной шириной, Кодирование CJK
РасширяетсяShift_JIS
  1. ^ Не в самом строгом смысле этого слова, поскольку байты ASCII могут отображаться как байты следа.

Кодовая страница Microsoft Windows 932 (сокращенно MS932,[1][2] Окна-932[2] или двусмысленно CP932[3]), также называемый Окна-31J среди других имен (см. § Терминология ниже), является Майкрософт Виндоус кодовая страница для японский язык, который является расширенным вариантом 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, однако это неоднозначно, поскольку Кодовая страница IBM 932, хотя также является вариантом Shift JIS, в нем отсутствуют выбранные NEC и NEC двухбайтовые расширения поставщика, которые присутствуют в варианте Microsoft (хотя оба включают расширения IBM), и сохраняет порядок JIS X 0208 1978 года.[4]

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

Кодовая страница Windows 932 зарегистрирована с IANA в качестве Окна-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-кандзи (или же cp932) для Windows-932 и ярлык Shift_JIS (или же sjis) для JIS X 0208-определенного Shift JIS, не распознавая Окна-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), выбор NEC расширений IBM (строки 89–92) и расширений IBM (строки 115–119) »,[7] в дополнение к выделению некоторого пространства для кодирования для определение конечного пользователя.[12] Это также отличается от IBM-932, который не включает расширения NEC или выбор NEC.[4]

Некоторые из этих представлений впоследствии использовались для разных персонажей JIS X 0213 и Смена 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 ТИЛЬДА (~) соответственно,[18][19][15] как они есть в ASCII (ISO-646 -НАС). Это также делается в стандарте кодирования W3C / WHATWG.[20] Напротив, 0x5C отображается на U + 00A5 ЙЕННЫЙ ЗНАК (¥) в 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]

Макет

Первый байт
0123456789АBCDEF
0
1
2!"#$%&'()*+,-./
30123456789:;<=>?
4@АBCDEFграммЧАСяJKLMNО
5пQрSТUVWИксYZ[\]^_
6`абcdежграммчасяjkлмпо
7пqрsттыvшИксуz{|}~
8
9
А
Bソ
C
D
E
F
Второй байт
0123456789АBCDEF
0
1
2
3
4
5
6
7
8
9
А
B
C
D
E
F
 
Непечатаемый символ ASCII
Символ ASCII
Символ ASCII, может быть заменен локализованными шрифтами
Однобайтовая катакана половинной ширины
Первый байт двухбайтового символа, используемый JIS X 0208
Первый байт двухбайтового символа расширения NEC или выбранного NEC
Не используется в качестве первого байта, незанятое пространство в JIS X 0208
Первый байт двухбайтового символа расширения IBM
Первый байт двухбайтового определяемого пользователем символа IBM
Не используется в качестве первого байта, лучше всего отображается как один байт в область частного использования
Второй байт двухбайтового символа, первая половина последовательности JIS которого была нечетной
Второй байт двухбайтового символа, первая половина последовательности JIS которого была четной
Не используется как второй байт двухбайтового символа


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

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

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

внешняя ссылка

Связанные с Microsoft

Связанные с IBM