Сдвиг HE
МИМ / IANA | Shift_HE |
---|---|
Псевдоним(а) | MS_Кандзи, [1] ПКК [2] [3] |
Язык(и) | В основном японский , но также поддерживаются английский , русский , болгарский , греческий. |
Стандартный | JIS X 0208:1997 Приложение 1 |
Классификация | Расширенный ISO 646 , [а] кодировка переменной ширины , кодировка CJK |
Расширяет | JIS X 0201 8-битный формат |
Преобразует/кодирует | ДЖИС Х 0208 |
Преемник | Shift_JIS-2004 (JIS) Windows-31J (веб) |
Shift JIS (также SJIS , MIME- имя Shift_JIS , известное как PCK в Solaris ) контексте [2] [3] — кодировка символов японского языка , первоначально разработанная японской компанией ASCII Corporation. [б] совместно с Microsoft и стандартизирован как JIS X 0208 Приложение 1 .
Сдвиг JIS основан на наборах символов, определенных в JIS стандартах JIS X 0201 :1997 (для однобайтовых символов ) и JIS X 0208 :1997 (для двухбайтовых символов ).
По состоянию на май 2024 г. [update]0,3% опрошенных веб-страниц использовали Shift JIS (фактически декодированный как надмножество кодировки Windows-31J ), снижение с 1,3% в июле 2014 года. [4] Shift JIS — вторая по популярности кодировка символов для японских веб-сайтов, используемая 5,1% сайтов в домене .jp, а UTF-8 используется 94,9% японских веб-сайтов. [5] [6]
Структура
[ редактировать ]Shift JIS — это расширение однобайтовой кодировки JIS X 0201 :1997 , которое использует неназначенные кодовые точки в JIS X 0201 для кодирования двухбайтового набора символов JIS X 0208 :1997 . Ведущие байты двухбайтовых символов «смещаются» вокруг 64 символов катаканы половинной ширины в однобайтовом диапазоне от 0xA1 до 0xDF .
Однобайтовые символы от 0x00 до 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 , [с] преобразование в соответствующие байты Shift JIS является:
Конкурирующий 8-битный формат EUC-JP , который не поддерживает однобайтовую катакану половинной ширины, обеспечивает более чистое и прямое преобразование в кодовые точки JIS X 0208 и обратно , поскольку все байты со старшими битами являются частями двойного кода. -байтовый символ и все коды из диапазона ASCII представляют собой однобайтовые символы.
Использование
[ редактировать ]HTML, написанный в Shift JIS, по-прежнему можно интерпретировать в некоторой степени, если он неправильно помечен как ASCII и когда тег кодировки находится в верхней части самого документа, поскольку важное начало и конец тегов и полей HTML ( <
, >
, /
, "
, &
, ;
) кодируются теми же байтами, что и в ASCII, и эти байты не появляются в двухбайтовых последовательностях.
Shift JIS можно использовать в строковых литералах в таких языках программирования, как C , но необходимо принять во внимание несколько вещей. Во-первых, escape-символ 0x5C, обычно обратная косая черта , представляет собой половинной ширины знак иены (¥) в Shift JIS. Если программист знает об этом, можно было бы использовать printf("ハローワールド¥n");
(где ハローワールド — «Привет, мир», а ¥n — escape-последовательность), при условии, что система ввода-вывода поддерживает Shift JIS вывод . Во-вторых, байт 0x5C вызовет проблемы, когда он появится как второй байт двухбайтового символа, поскольку он будет интерпретироваться как escape-последовательность, что испортит интерпретацию, если за ним не последует еще один 0x5C.
Несколько версий
[ редактировать ]Существует множество различных версий 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) и сохраняет порядок символов из издания JIS X 0208 1978 года, а не чем реализация замены вариантов символов из стандарта 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), выбор расширений IBM NEC (строки с 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
[ редактировать ]Псевдоним(а) | Shift_JISx0213 |
---|---|
Язык(и) | японский , айнский , английский , русский |
Стандартный | ДЖИС Х 0213 |
Расширяет | Shift_HE (1997), JIS X 0201 (8-битный) |
Преобразует/кодирует | ДЖИС Х 0213 |
Предшественник | Сдвиг_HE (1997) |
Новый стандарт 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), номер строки ( 区 , ку , палата) (1-94) и — это номер ячейки ( 点 , десять , точка) (1–94). Числа ку и десять эквивалентны и соответственно, где представляет собой двухбайтовую последовательность 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 , используются определенными расширениями, в результате чего схема подробно описана в таблице ниже.
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
См. также
[ редактировать ]Сноски
[ редактировать ]- ^ Не в самом строгом смысле этого слова, поскольку байты ASCII могут отображаться как байты следа.
- ^ Корпорацию ASCII не следует путать с кодировкой ASCII, используемой в других местах этой статьи.
- ^ В JIS X 0208 каждый j 1 и j 2 находятся в диапазоне от 33 (0x21) до 126 (0x7e) включительно (т. е. значения 7-битных символов, исключая управляющие символы (0–31 (0x1f) и 127 (0x7f)) и космос).
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с «Наборы символов» . ИАНА.
- ^ Перейти обратно: а б "conputf8.c" . ОпенСолярис . Строка 305. 12 ноября 2008 г.
- ^ Перейти обратно: а б «Дополнительные японские модули iconv» . Что нового в операционной среде Solaris 9 9/04 . Корпорация Оракл .
- ^ «Исторические тенденции использования кодировок символов на веб-сайтах, май 2024 г.» . w3techs.com . Проверено 22 мая 2024 г.
- ^ «Распространение кодировок символов между веб-сайтами, использующими .jp» . w3techs.com . Проверено 22 мая 2024 г.
- ^ «Распространение кодировок символов среди веб-сайтов, использующих японский язык» . w3techs.com . Проверено 9 апреля 2024 г.
- ^ Перейти обратно: а б «Свойство Encoding.WindowsCodePage — .NET Framework (текущая версия)» . MSDN . Майкрософт.
- ^ «Идентификаторы кодовых страниц» . Центр разработки Windows . Майкрософт. 7 января 2021 г.
- ^ «ИБМ-943 и IBM-932» . Центр знаний IBM . ИБМ.
- ^ «CP932.TXT» . Консорциум Юникод.
- ^ «3.1.1 Подробности проблем» . Проблемы и решения для символов Юникода и символов, определяемых пользователем/поставщиком . Открытая группа Японии. Архивировано из оригинала 3 февраля 1999 г.
- ^ Каплан, Майкл С. (17 сентября 2005 г.). «Когда обратная косая черта не является обратной косой чертой?» .
- ^ Каплан, Майкл С. (26 мая 2007 г.). «PUA вне Unicode» . Разбираемся во всем .
- ^ «5. Индексы (§ Индекс jis0208)» . Стандарт кодирования . ЧТОРГ.
- ^ «4.2. Названия и метки» . Стандарт кодирования . ЧТОРГ.
- ^ Перейти обратно: а б с «JAPANESE.TXT: сопоставление (внешняя версия) японской кодировки Mac OS с Unicode 2.1 и более поздних версий» . Apple Computer, Inc.; Консорциум Юникод.
- ^ Лунде, Кен (21 марта 2019 г.). «Краткая история лигатур имен японской эпохи» . Типовой блог CJK . Adobe Inc.
- ^ «Варианты кодирования для MacJapanese» . Документация разработчика Apple . Яблоко.
- ^ Лунде, Кен (2008). «Приложение E: Стандарты набора символов поставщика» (PDF) . Обработка информации CJKV . О'Рейли Медиа . ISBN 9780596514471 .
- ^ «Таблицы сопоставления кодов JIS X 0213» . x0213.org.
- ^ «Типичная система кодирования JIS X 0213 § Shift_JIS-2004» (на японском языке) Шестнадцатеричные числа в исходном коде были преобразованы в десятичные для отображения.
- ^ Японский комитет промышленных стандартов (13 апреля 2004 г.). Набор японских графических символов для обмена информацией, плоскость 1 (PDF) . ITSCJ/ IPSJ . ИСО-ИК -233.
- ^ «Индексная визуализация jis0208» . Стандарт кодирования . ЧТОРГ.
- ^ «Оригинальные эмодзи от DoCoMo» . FileFormat.info.
- ^ «Оригинальные эмодзи от KDDI» . FileFormat.info.
Внешние ссылки
[ редактировать ]- Shift-JIS Kanji Table – таблица не-ASCII-части кодового набора.
- «Кодовая страница Windows 932» . Майкрософт . 1 мая 2005 г. Архивировано из оригинала 7 марта 2008 г. – определение Microsoft
- Формы Shift-JIS в ICU ( Международные компоненты для Unicode )