Shift JIS - Shift JIS

Shift JIS
MIME / IANAShift_JIS
Псевдоним (а)MS_Kanji[1]
Язык (и)В первую очередь Японский, но также поддерживая английский, русский
СтандартJIS X 0208: 1997 Приложение 1
КлассификацияРасширенный ISO 646,[а] кодирование с переменной шириной, Кодирование CJK
РасширяетсяJIS X 0201 8-битный формат
Преобразует / кодируетJIS X 0208
ПреемникShift_JIS-2004 (JIS)
Окна-31J (Интернет)
  1. ^ Не в самом строгом смысле этого слова, поскольку байты ASCII могут отображаться как байты следа.

Shift JIS (Сдвиг японских промышленных стандартов, также SJIS, MIME имя Shift_JIS) это кодировка символов для японский язык, первоначально разработанная Японский компания позвонила Корпорация ASCII в сочетании с Microsoft и стандартизированы как JIS X 0208 Приложение 1. К 2020 г., 0,2% всех веб-страниц использовали Shift JIS, по сравнению с 1,3% в июле 2014 года.[2]

Японские веб-сайты имеют самый низкий уровень принятия Unicode (после южнокорейских веб-сайтов, где EUC-KR, более популярны): UTF-8 используется только на 89,5% веб-сайтов (остальные - Shift JIS и EUC-JP ).[3][4]

Описание

Shift JIS основан на наборах символов, определенных в JIS стандарты JIS X 0201:1997 (для однобайтовые символы ) и JIS X 0208:1997 (для двухбайтовые символы ). Старшие байты для двухбайтовых символов «сдвигаются» на половину ширины 64 катакана символы в однобайтовом диапазоне От 0xA1 до 0xDF. Однобайтовые символы 0x От 00 до 0x7F соответствуют ASCII кодировка, кроме иена знак (U + 00A5) в 0x5C и над чертой (U + 203E) в 0x7E вместо обратной косой черты и тильды в наборе символов ASCII. Однобайтовые символы от 0xA1 до 0xDF отображаются на символы катаканы половинной ширины, найденные в JIS X 0201.

HTML, написанный в Shift JIS, все еще может быть интерпретирован до некоторой степени, если он неправильно помечен как ASCII, и когда тег набора символов находится в верхней части самого документа, поскольку важные начало и конец тегов и полей HTML, <,>, /, ", &,; кодируются теми же одиночными байтами, что и в ASCII, и эти байты не будут отображаться в двухбайтовых последовательностях. Shift JIS можно использовать в строковые литералы в языках программирования, таких как C, но следует учесть несколько моментов. Во-первых, что escape-символ 0x5C, обычно обратная косая черта, это половина ширины знак иены (¥) в Shift JIS. Если программист знает об этом, можно было бы использовать printf ("ロ ー ワ ー ル ド ¥ n"); (где ハ ロ ー ワ ー ル - Привет, мир и ¥ n - escape-последовательность), предполагая, что система ввода-вывода поддерживает Shift JIS выход. Во-вторых, байт 0x5C вызовет проблемы, когда он появится как второй байт двухбайтового символа, потому что он будет интерпретирован как escape-последовательность, что испортит интерпретацию, если за ним не последует другой 0x5C.

Shift JIS требует 8-битный чистый среда для передачи. Это полностью обратно совместимый с наследием JIS X 0201 однобайтовая кодировка, то есть поддерживает катакана половинной ширины и что любой действительный JIS X 0201 строка также является допустимой строкой Shift JIS. Однако для двухбайтовых символов Shift JIS гарантирует только то, что для первого байта будет установлен старший бит (0x80–0xFF); значение второго байта может быть старшим или младшим. Отображение байтовых значений 0x40–0x7E в качестве вторых байтов кодовые слова затрудняет надежное обнаружение Shift JIS, поскольку для символов ASCII используются одни и те же коды. Поскольку одно и то же значение байта может быть либо первым, либо вторым байтом, поиск по строкам затруднен, поскольку простой поиск может соответствовать второму байту символа и первому байту следующего, который не является реальным символом. Алгоритмы поиска строк должны быть адаптированы для Shift JIS.

С другой стороны, конкурирующий 8-битный формат EUC-JP, который не поддерживает однобайтовую катакану половинной ширины, обеспечивает более четкое и прямое преобразование в JIS X 0208 и обратно кодовые точки, поскольку все байты с набором старших битов являются частями двухбайтового символа, а все коды из диапазона ASCII представляют собой однобайтовые символы.

Unicode также не имеет некоторых недостатков Shift JIS. Unicode не имеет двусмысленных версий: новые символы назначаются на неиспользуемые места одной организацией, в то время как зоны частного использования четко обозначены, никогда не будут использоваться для стандартных символов и редко требуются из-за всеобъемлющего характера Unicode. Для Shift JIS компании работают параллельно. UTF-8 -encoded Unicode обратно совместим с ASCII также для 0x5C и не имеет проблемы поиска строки.

Для двухбайтовой последовательности JIS ,[5] преобразование в соответствующие байты Shift JIS является:

Несколько версий

Диаграмма Эйлера сравнение репертуаров JIS X 0208, JIS X 0212, JIS X 0213, Окна-31J, стандартный репертуар Microsoft и Unicode
Связь между вариантами Shift_JIS на ПК и соответствующими кодировками, включая пересечения и другие подмножества. Приведенные имена носят описательный характер.

Существует много разных версий Shift JIS. Есть два направления для расширения:

Во-первых, JIS X 0208 не заполняет все пространство 94 × 94, закодированное для него в Shift JIS, поэтому здесь есть место для большего количества символов - это действительно расширения JIS X 0208, а не самого Shift JIS.

Во-вторых, Shift JIS имеет больше места для кодирования, чем требуется для JIS X 0201 и JIS X 0208 (видеть § Сдвиг байтовой карты JIS ниже), и это пространство может использоваться и используется для еще большего количества символов.

Окна-932 / Окна-31J

Самым популярным расширением является Кодовая страница Windows 932CCSID также используется для Расширение IBM для Shift JIS ), который зарегистрирован в IANA как "Windows-31J",[1] отдельно от Shift JIS. Это было популяризировано Microsoft, хотя сама Microsoft не распознает имя Windows-31J и вместо этого называет этот вариант «shift_jis».[6][7] Кодовая страница 943 IBM включает те же двухбайтовые коды, что и кодовая страница 932 Microsoft, в то время как кодовая страница 932 IBM включает меньшее количество расширений (за исключением тех, которые Microsoft включает из NEC), и сохраняет порядок символов из издания JIS X 0208 1978 года, а не чем реализация замена вариантов персонажей от стандарта 1983 года.[8]

Windows-31J назначает 0x5C для U + 005C REVERSE SOLIDUS ( обратная косая черта ) и от 0x7E до U + 007E ТИЛЬДА, следующий US-ASCII.[9] Однако большинство локализованных шрифтов в Windows отображают U + 005C как Знак иены за JIS X 0201 совместимость.[10][11] Он включает несколько расширений, а именно "Специальные символы NEC (Строка 13), выбор NEC расширений IBM (строки 89–92) и расширений IBM (строки 115–119) »,[1] в дополнение к выделению некоторого пространства для кодирования для определение конечного пользователя.[12]

Кодовая страница Windows 932 - это версия, используемая в W3C /WHATWG стандарт кодирования, используемый HTML5, который включает «ранее проприетарные расширения от IBM и NEC» из Windows-31J в свою таблицу для JIS X 0208,[13] а также трактует метку shift_jis как синоним «windows-31j» с целью «совместимости с развернутым контентом».[14]

MacЯпонский

Версия Shift-JIS, происходящая из классическая Mac OS (известный как x-mac-японский, Кодовая страница 10001[6] или MacJapanese) присвоили тильда до 0x7E (после US-ASCII, нет JIS X 0201 который присваивает над чертой здесь), но Знак иены до 0x5C (как в JIS X 0201 и стандарт Shift JIS). Он также расширил JIS X 0201 путем присвоения обратная косая черта до 0x80 (соответствует 0x5C в US-ASCII), неразрывное пространство к 0xA0, знак авторского права к 0xFD, символ товарного знака до 0xFE и полуширины горизонтальный эллипс в 0xFF. Он также добавил расширенные двухбайтовые символы; включая 53 формы вертикального представления в Shift_JIS диапазон 0xEB41–0xED96, на 84 строки JIS ниже их канонических форм и 260 специальных символов в диапазоне Shift_JIS 0x8540–0x886D.[15] Этот вариант был представлен в KanjiTalk версия 7.[16]

Однако в некоторых гарнитурах Mac OS использовались другие варианты. Сай Минчо и Чу Готик используют "PostScript "вариант MacJapanese, который включал дополнительные вертикальные формы представления и другой набор расширенных специальных символов, основанный на Специальные символы NEC, некоторые из которых были доступны только в версиях шрифтов для принтера.[15] Старые версии Maru Gothic и Hon Mincho от Система 7.1 закодированные вертикальные формы представления на 10 (а не 84) строк JIS вниз от их канонических форм и не включали расширения специальных символов, это было впоследствии изменено.[15][17] Типичный вариант, используемый с KanjiTalk версии 6, размещает вертикальные формы представления на 10 строк вниз, а также использует макет расширения NEC для строки 13.[18]

Shift_JISx0213 и Shift_JIS-2004

Shift_JIS-2004
Псевдоним (а)Shift_JISx0213
Язык (и)Японский, Айны, английский, русский
СтандартJIS X 0213
РасширяетсяShift_JIS (1997),
JIS X 0201 (8 бит)
Преобразует / кодируетJIS X 0213
ПредшествуетShift_JIS (1997)

Новее JIS X 0213 стандарт определяет расширенный вариант Shift_JIS, называемый Shift_JISx0213 (в предыдущей версии стандарта) или Shift_JIS-2004. Это надмножество стандартного Shift JIS.[19]

Чтобы представить выделенные строки на обеих плоскостях JIS X 0213, Shift_JIS-2004 использует следующий метод сопоставления кодовых точек.[20]

В приведенном выше описании представляет собой двухбайтовую последовательность Shift_JIS-2004, это самолет (, люди, поверхность) число (1 или 2), это строка (, ку, сторожить) номер (1-94) и это клетка (, десять, точка) номер (1-94). В ку и десять числа эквивалентны и соответственно, где представляет собой двухбайтовую последовательность JIS, ссылающуюся на данную плоскость.

Тот же набор символов может быть представлен EUC-JIS-2004, аналог на базе EUC-JP.

Некоторые дополнения конфликтуют с популярными расширениями Shift JIS, включая кодовую страницу Windows 932, которая используется в веб-стандартах (см. над ). Например, сравните плоскость 1 ряд 89 в JIS X 0213 (начало 硃, 硎, 硏…)[21] до строки 89 в варианте JIS X 0208, определенном в веб-стандартах (начало 纊, 褜, 鍈…).[22] Кроме того, некоторые символы отображаются в символы Unicode за пределами BMP.

Другие варианты

Пространство со стартовыми байтами от 0xF5 до 0xF9 (за пределами области, используемой для JIS X 0208) используется японцами. мобильный телефон операторы для пиктограммы для использования в Электронное письмо.[23] KDDI идет дальше и определяет еще сотни в пространстве с ведущими байтами 0xF3 и 0xF4.[24]

Помимо этого, в Shift JIS было внесено множество незначительных изменений, в которых кое-где были изменены отдельные персонажи. Большинство этих расширений и вариантов не имеют IANA регистрации, поэтому есть много возможностей для путаницы, если используются расширения.

Вариант - это тот, который необходимо использовать, если вы хотите кодировать Shift JIS в исходном коде. струны из C и аналогичные языки программирования. Этот вариант удваивает байт 0x5C, если он появляется как второй байт двухбайтового символа, но не, если он отображается как один символ «¥» (ASCII: «»), потому что 0x5C является началом escape-последовательность. Лучший способ справиться с этим - специальный редактор, который кодирует Shift JIS Сюда.

Сдвиг байтовой карты JIS

Как определено в JIS X 0208: 1997

В приведенной ниже таблице показано подробное значение каждого байта в потоке, закодированного в стандартном формате. Shift JIS (в соответствии с JIS X 0208: 1997).

Первый байт
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
Не используется в качестве первого байта символа JIS X 0208
Второй байт двухбайтового символа JIS X 0208, первая половина последовательности JIS которого была нечетной
Второй байт двухбайтового символа JIS X 0208, первая половина последовательности JIS которого была четной
Не используется как второй байт символа JIS X 0208

С расширениями поставщика или JIS X 0213

Некоторые байты, которые не используются для однобайтовых кодов или начальных байтов в JIS X 0208: 1997 используются определенными расширениями, поэтому их макет показан в таблице ниже.

Первый байт
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 (и такими расширениями, как JIS X 0213, плоскость 1)
Первый байт двухбайтового символа, нераспределенный в JIS X 0208, но используемый JIS X 0213, плоскость 1 или расширениями поставщика
Первый байт двухбайтового символа после JIS X 0208, используемый для JIS X 0213, плоскость 2 или для несвязанных расширений
Не используется в качестве первого байта, используется некоторыми однобайтовыми расширениями
Второй байт двухбайтового символа, первая половина последовательности JIS которого была нечетной
Второй байт двухбайтового символа, первая половина последовательности JIS которого была четной
Не используется как второй байт двухбайтового символа


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

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

  1. ^ а б c «Наборы символов». IANA.
  2. ^ «Исторические тенденции использования кодировок символов для веб-сайтов, январь 2020 г.». w3techs.com. Получено 2020-01-19.
  3. ^ «Распределение кодировок символов среди веб-сайтов, использующих .jp». w3techs.com. Получено 2020-07-09.
  4. ^ «Распределение кодировок символов среди веб-сайтов, использующих японский язык». w3techs.com. Получено 2020-07-03.
  5. ^ j1 и j2 каждый находится в диапазоне от 33 (0x21) до 126 (0x7e) включительно (т.е. 7-битные символьные значения, исключая управляющие символы (0–31 (0x1f) и 127 (0x7f)) и пробел)
  6. ^ а б "Свойство Encoding.WindowsCodePage - .NET Framework (текущая версия)". MSDN. Microsoft.
  7. ^ «Идентификаторы кодовой страницы». Центр разработки для Windows. Microsoft.
  8. ^ «IBM-943 и IBM-932». Центр знаний IBM. IBM.
  9. ^ "CP932.TXT". Консорциум Unicode.
  10. ^ «3.1.1 Подробности проблем». Проблемы и решения для Unicode и символов, определенных пользователем / поставщиком. Открытая группа в Японии. Архивировано из оригинал на 1999-02-03.
  11. ^ Каплан, Майкл С. (17 сентября 2005 г.). "Когда обратная косая черта не является обратной косой чертой?".
  12. ^ Каплан, Майкл С. (26 мая 2007 г.). «PUA за пределами Unicode». Сортировка всего.
  13. ^ "5. Указатели (§ Указатель jis0208)". Стандарт кодирования. WHATWG.
  14. ^ «4.2. Имена и ярлыки». Стандарт кодирования. WHATWG.
  15. ^ а б c "JAPANESE.TXT: преобразование (внешняя версия) японской кодировки Mac OS в Unicode 2.1 и более поздних версий". Apple Computer, Inc.; Консорциум Unicode.
  16. ^ Лунде, Кен (2019-03-21). "Краткая история лигатур имен японской эпохи". Блог CJK Type. Adobe Inc.
  17. ^ «Варианты кодирования для японского языка Mac». Документация для разработчиков Apple. Яблоко.
  18. ^ Лунде, Кен (2008). «Приложение E: Стандарты набора символов поставщика» (PDF). CJKV Обработка информации. O'Reilly Media. ISBN  9780596514471.
  19. ^ «Таблицы сопоставления кодов JIS X 0213». x0213.org.
  20. ^ "JIS X 0213 の 代表 的 な 符号 化 方式 § Shift_JIS-2004" (на японском языке). Шестнадцатеричные числа в источнике были преобразованы в десятичные для отображения.
  21. ^ «233: Набор японских графических символов для обмена информацией, плоскость 1» (PDF). IPSJ.
  22. ^ "Индекс jis0208 визуализация". Стандарт кодирования. WHATWG.
  23. ^ «Оригинальный смайлик от DoCoMo». FileFormat.info.
  24. ^ «Оригинальный смайлик от KDDI». FileFormat.info.

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