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

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

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

Описание [ править ]

Сдвиг 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. Если программист знает об этом, его можно будет использовать (где (ロ ー ワ ー ル ド - Hello , Мир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 обратно совместим с ASCII также для 0x5C и не имеет проблемы с поиском строки.

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

Несколько версий [ править ]

Диаграмма Эйлера для сравнения репертуаров 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». [6] [7] Кодовая страница 943 IBM включает те же двухбайтовые коды, что и кодовая страница 932 Microsoft, в то время как кодовая страница 932 IBM включает меньше расширений (за исключением тех, которые Microsoft включает из NEC), и сохраняет порядок символов из издания 1978 года. JIS X 0208,вместо того, чтобы реализовывать замену вариантов персонажаот стандарта 1983 года. [8]

Windows-31J назначает 0x5C для U + 005C REVERSE SOLIDUS ( обратная косая черта ) и 0x7E для U + 007E TILDE , после 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]

MacJapanese [ править ]

Версия Shift-JIS , происходящий из классического Mac OS (известная как x-mac-japanese, код страница 10001 [6] или MacJapanese) назначена тильда к 0x7E (после US-ASCII , не JIS X 0201 , который назначает длинный ряд здесь), но Yen войдите в 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 [ править ]

Более новый стандарт 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, которая используется в веб-стандартах (см. Выше ). Например, сравните строку 89 плоскости 1 в 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 ).

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

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


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

  • Японский язык и компьютеры
  • Кодовая страница Microsoft 932
  • Моджибаке
  • Сдвиг JIS art

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

  1. ^ a b c «Наборы символов» . IANA.
  2. ^ «Исторические тенденции использования кодировок символов для веб-сайтов, февраль 2021 г.» . w3techs.com . Проверено 11 февраля 2021 .
  3. ^ «Распределение кодировок символов среди веб-сайтов, использующих .jp» . w3techs.com . Проверено 9 июля 2020 .
  4. ^ «Распределение кодировок символов среди веб-сайтов, использующих японский язык» . w3techs.com . Проверено 3 июля 2020 .
  5. ^ j 1 и j 2 находятся в диапазоне от 33 (0x21) до 126 (0x7e) включительно (т. е. 7-битные значения символов, исключая управляющие символы (0–31 (0x1f) и 127 (0x7f)) и пробел)
  6. ^ a b «Свойство 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. ^ Каплан, Майкл S (2007-05-26). «PUA за пределами Unicode» . Разбираемся со всем .
  13. ^ "5. Указатели (§ Указатель jis0208)" . Стандарт кодирования . WHATWG.
  14. ^ «4.2. Имена и метки» . Стандарт кодирования . WHATWG.
  15. ^ a b c «JAPANESE.TXT: преобразование (внешняя версия) японской кодировки Mac OS в Unicode 2.1 и более поздних версий» . Apple Computer, Inc.; Консорциум Unicode.
  16. ^ Лунде, Кен (2019-03-21). «Краткая история лигатур имени эры Японии» . Блог типа CJK . Adobe Inc .
  17. ^ «Варианты кодирования для MacJapanese» . Документация для разработчиков 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. ^ Японский комитет промышленных стандартов (2004-04-13). Набор японских графических символов для обмена информацией, плоскость 1 (PDF) . ITSCJ / IPSJ . ISO-IR -233.
  22. ^ "Индекс jis0208 визуализации" . Стандарт кодирования . WHATWG.
  23. ^ «Оригинальный смайлик от DoCoMo» . FileFormat.info.
  24. ^ «Оригинальный смайлик от KDDI» . FileFormat.info.

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

  • Shift-JIS Kanji Table  - таблица не-ASCII части кодового набора
  • «Кодовая страница Windows 932» . Microsoft . 1 мая 2005 года Архивировано из оригинала на 2008-03-07. - определение Microsoft
  • Формы Shift-JIS в ICU ( международные компоненты Unicode )
    • ibm-942 (sjis78)
    • ibm-943 (содержит отображение \ u00A5 ↔ \ x5C)
    • Shift JIS (содержит отображение \ u005C ↔ \ x5C)