stringtranslate.com

Сдвиг JIS

Shift JIS ( Shift Japan Industrial Standards , также SJIS , MIME -имя Shift_JIS , известная как PCK в контексте Solaris ) [2] [3]кодировка символов японского языка , первоначально разработанная японской компанией ASCII Corporation [b] совместно с Microsoft и стандартизирован как JIS X 0208, Приложение 1 .

Сдвиг JIS основан на наборах символов, определенных в стандартах JIS JIS X 0201 :1997 (для однобайтовых символов ) и JIS X 0208 :1997 (для двухбайтовых символов ).

По состоянию на февраль 2024 года 0,3% опрошенных веб-страниц использовали Shift JIS (фактически декодированный как расширенная кодировка Windows-31J ), что меньше, чем 1,3% в июле 2014 года. [4] Shift JIS является второй по популярности кодировкой символов для японского языка. веб-сайты, используемые 5,3% сайтов в домене .jp. UTF-8 используется на 94,7% японских веб-сайтов. [5] [6]

Состав

Shift JIS — это расширение однобайтовой кодировки JIS X 0201 :1997 , которое использует неназначенные кодовые точки в JIS X 0201 для кодирования двухбайтового набора символов JIS X 0208 :1997 . Ведущие байты двухбайтовых символов «смещаются» вокруг 64 символов катаканы половинной ширины в однобайтовом диапазоне от 0xA1 до 0xDF .

Однобайтовые символы от 0x 00 до 0x7F соответствуют кодировке ASCII , за исключением знака иены (U+00A5) в 0x5C и надстрочной черты (U+203E) в 0x7E вместо обратной косой черты и тильды набора символов ASCII соответственно (эти отклонения из ASCII в соответствии с JIS X 0201 ). Однобайтовые символы от 0xA1 до 0xDF соответствуют символам катаканы половинной ширины, найденным в JIS X 0201 .

Для двухбайтовых символов первый байт всегда находится в диапазоне от 0x81 до 0x9F или от 0xE0 до 0xEF (эти диапазоны не назначены в JIS X 0201 ). Если первый байт нечетный, второй байт должен находиться в диапазоне от 0x40 до 0x9E (но не может быть 0x7F); если первый байт четный, второй байт должен находиться в диапазоне от 0x9F до 0xFC.

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

Совместимость

Shift JIS полностью обратно совместим с однобайтовой кодировкой JIS X 0201 , а это означает, что любая допустимая строка JIS X 0201 также является допустимой строкой Shift JIS.

Двухбайтовые символы в JIS X 0208 необходимо преобразовать, чтобы их можно было закодировать в Shift JIS. Для двухбайтовой последовательности JIS X 0208 [ c] преобразование в соответствующие байты Shift JIS выглядит следующим образом:

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

Применение

HTML, написанный в Shift JIS, по-прежнему можно интерпретировать в некоторой степени, если он неправильно помечен как ASCII и когда тег кодировки находится в верхней части самого документа, поскольку важные начало и конец тегов и полей HTML ( <, >, /, ", &, ;) кодируются теми же байтами, что и в ASCII, и эти байты не появляются в двухбайтовых последовательностях.

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

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

Диаграмма Эйлера , сравнивающая репертуары JIS X 0208 , JIS X 0212 , JIS X 0213 , Windows-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 (см. § Карту байтов Shift JIS ниже), и это пространство может и используется для еще большего количества символов (как однобайтовых, так и двухбайтовых). персонажи).

Windows-932/Windows-31J

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

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

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

MacЯпонский

Версия Shift-JIS, происходящая из классической Mac OS (известная как x-mac-japanese, кодовая страница 10001 [7] или 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. [16] Этот вариант был представлен в KanjiTalk версии 7. [17]

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

Shift_JISx0213 и Shift_JIS-2004

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Сноски

  1. ^ Не в самом строгом смысле этого слова, поскольку байты ASCII могут отображаться как байты следа.
  2. ^ Корпорацию ASCII не следует путать с кодировкой ASCII , используемой в других местах этой статьи.
  3. ^ В JIS X 0208 каждый j 1 и j 2 находятся в диапазоне от 33 (0x21) до 126 (0x7e) включительно (т. е. значения 7-битных символов, исключая управляющие символы (0–31 (0x1f) и 127 (0x7f)) и космос).

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

  1. ^ abc «Наборы символов». ИАНА.
  2. ^ ab "conputf8.c". ОпенСолярис . Строка 305. 12 ноября 2008 г.
  3. ^ ab «Дополнительные японские модули iconv». Что нового в операционной среде Solaris 9 9/04 . Корпорация Оракл .
  4. ^ «Исторические тенденции использования кодировок символов на веб-сайтах, январь 2024 г.» . w3techs.com . Проверено 2 февраля 2024 г.
  5. ^ «Распространение кодировок символов между веб-сайтами, использующими .jp» . w3techs.com . Проверено 1 января 2024 г.
  6. ^ «Распространение кодировок символов среди веб-сайтов, использующих японский язык» . w3techs.com . Проверено 1 января 2024 г.
  7. ^ ab «Свойство Encoding.WindowsCodePage — .NET Framework (текущая версия)». MSDN . Майкрософт.
  8. ^ «Идентификаторы кодовых страниц». Центр разработки Windows . Майкрософт. 7 января 2021 г.
  9. ^ «IBM-943 и IBM-932». Центр знаний IBM . ИБМ.
  10. ^ "CP932.TXT". Консорциум Юникод.
  11. ^ «3.1.1 Подробности проблем» . Проблемы и решения для символов Юникода и символов, определяемых пользователем/поставщиком . Открытая группа Японии. Архивировано из оригинала 3 февраля 1999 г.
  12. ^ Каплан, Майкл С. (17 сентября 2005 г.). «Когда обратная косая черта не является обратной косой чертой?».
  13. ^ Каплан, Майкл С (26 мая 2007 г.). «PUA вне Unicode». Разбираемся во всем .
  14. ^ «5. Индексы (§ Индекс jis0208)» . Стандарт кодирования . ЧТОРГ.
  15. ^ «4.2. Имена и метки». Стандарт кодирования . ЧТОРГ.
  16. ^ abc «JAPANESE.TXT: отображение (внешняя версия) японской кодировки Mac OS в Unicode 2.1 и более поздних версий». Apple Computer, Inc.; Консорциум Юникод.
  17. ^ Лунде, Кен (21 марта 2019 г.). «Краткая история лигатур имен японской эпохи». Типовой блог CJK . Adobe Inc.
  18. ^ «Варианты кодирования для MacJapanese». Документация разработчика Apple . Яблоко.
  19. ^ Лунде, Кен (2008). «Приложение E: Стандарты набора символов поставщика» (PDF) . Обработка информации CJKV . О'Рейли Медиа . ISBN 9780596514471.
  20. ^ «Таблицы сопоставления кодов JIS X 0213» . x0213.org.
  21. ^ «JIS X 0213の代表的な符号化方式 § Shift_JIS-2004» (на японском языке).Шестнадцатеричные числа в исходном коде преобразованы в десятичные для удобства отображения.
  22. ^ Японский комитет промышленных стандартов (13 апреля 2004 г.). Набор японских графических символов для обмена информацией, плоскость 1 (PDF) . ITSCJ/ IPSJ . ИСО-ИК -233.
  23. ^ «Индексная визуализация jis0208» . Стандарт кодирования . ЧТОРГ.
  24. ^ "Оригинальные смайлики от DoCoMo" . FileFormat.info.
  25. ^ «Оригинальные смайлики от KDDI» . FileFormat.info.

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