Shift JIS

редактировать
Японская кодировка символов
Shift JIS
MIME / IANAShift_JIS
Псевдоним (а)MS_Kanji
Язык (и)В основном японский, но также поддерживает английский, русский
стандартныйJIS X 0208: 1997 Приложение 1
КлассификацияРасширенная ISO 646, кодирование переменной ширины, Кодирование CJK
РасширяетJIS X 0201 8-битный формат
Преобразование / кодированиеJIS X 0208
ПреемникShift_JIS-2004 (JIS). Windows-31J (web)
  • v
  • t

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

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

Содержание
  • 1 Описание
  • 2 Несколько версий
    • 2.1 Windows-932 / Windows-31J
    • 2.2 MacJapanese
    • 2.3 Shift_JISx0213 и Shift_JIS-2004
    • 2.4 Другие варианты
  • 3 Shift карта байтов JIS
    • 3.1 Как определено в JIS X 0208: 1997
    • 3.2 С расширениями поставщика или JIS X 0213
  • 4 См. также
  • 5 Ссылки
  • 6 Внешние ссылки
Описание

Сдвиг 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, и когда Тег charset находится в верхней части самого документа, поскольку важные начало и конец HTML-тегов и полей, <,>, /, ",,; кодируются теми же байтами, что и в ASCII, и эти байты выиграли" t отображаются в виде двухбайтовых последовательностей. Shift JIS можно использовать в строковых литералах в таких языках программирования, как C, но необходимо учитывать несколько моментов. Во-первых, escape-символ 0x5C, обычно обратная косая черта, является половинной шириной знаком йены (¥) в Shift JIS. Если программист знает из этого можно было бы использовать printf ("ハ ロ ー ワ ー ル ド ¥ n");(где ハ ロ ー ワ ー ル ド - Hello, world и ¥ 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 не имеет двусмысленных версий: новые символы назначаются неиспользуемым местам одной организацией, в то время как области частного использования четко обозначены, никогда не будут использоваться для стандартных символов и редко нужны из-за всеобъемлющего характера Юникод. Для Shift JIS компании работают параллельно. UTF-8 Unicode обратно совместим с ASCII также для 0x5C и не имеет проблемы поиска строки.

Для двухбайтовой последовательности JIS j 1 j 2 {\ displaystyle j_ {1} j_ {2}}j_ {1} j_ {2} преобразование в соответствующие байты Shift JIS s 1 s 2 {\ displaystyle s_ {1} s_ {2}}s_ {1} s_ {2} равно:

s 1 = {⌊ j 1 + 1 2 ⌋ + 112, если 33 ≤ j 1 ≤ 94 ⌊ j 1 + 1 2 ⌋ + 176, если 95 ≤ j 1 ≤ 126 {\ displaystyle s_ {1} = {\ begin {cases} \ left \ lfloor {\ frac {j_ {1} +1} {2}} \ right \ rfloor +112 и {\ t_dv {if}} 33 \ leq j_ {1} \ leq 94 \\\ left \ lfloor {\ frac {j_ {1} +1} {2}} \ right \ rfloor +176 {\ t_dv { if}} 95 \ leq j_ {1} \ leq 126 \ end {cases}}}s_ {1} = {\ begin {cases} \ left \ lfloor {\ frac {j_ {1} +1} {2}} \ right \ rfloor +112 {\ t_dv {if}} 33 \ leq j_ {1} \ leq 94 \\\ left \ lfloor {\ frac {j_ {1} +1} {2}} \ right \ rfloor +176 {\ t_dv {if}} 95 \ leq j_ {1} \ leq 126 \ end {cases}}
s 2 = {j 2 + 31 + ⌊ j 2 96 ⌋, если j 1 нечетное, j 2 + 126, если j 1 нечетное даже {\ displaystyle s_ {2} = {\ begin {cases} j_ {2} +31+ \ left \ lfloor {\ frac {j_ {2}} {96}} \ right \ rfloor {\ t_dv {if} } j_ {1} {\ t_dv {нечетное}} \\ j_ {2} +126 {\ t_dv {if}} j_ {1} {\ t_dv {четное}} \ end {cases}}}s_ {2} = {\ begin {cases} j_ {2} +31+ \ left \ lfloor {\ frac {j_ {2}} {96}} \ right \ rfloor {\ t_dv {if}} j_ {1} {\ t_dv {is odd}} \\ j_ {2} +126 {\ t_dv {if}} j_ {1} {\ t_dv {is even}} \ end {case}}
Несколько версий
диаграмма Эйлера, сравнивающая репертуары 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 byte map ниже), и это пространство может использоваться и используется для больше персонажей.

Windows-932 / Windows-31J

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

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

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

MacJapanese

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

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

Shift_JISx0213 и Shift_JIS-2004

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

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

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

s 1 = {⌊ k + 257 2 ⌋, если m = 1 и 1 ≤ k ≤ 62 ⌊ k + 385 2 ⌋, если m = 1 и 63 ≤ k ≤ 94 ⌊ k + 479 2 ⌋ - ⌊ k 8 ⌋ × 3, если m = 2 и k = 1, 3, 4, 5, 8, 12, 13, 14, 15 ⌊ k + 411 2 ⌋, если m = 2 и 78 ≤ k ≤ 94 {\ displaystyle s_ {1} = {\ begin {cases} \ left \ lfloor {\ frac {k + 257} {2}} \ right \ rfloor {\ t_dv {if}} m = 1 {\ t_dv {and}} 1 \ leq k \ leq 62 \\\ left \ lfloor {\ frac {k + 385} {2}} \ right \ rfloor {\ t_dv {if}} m = 1 {\ t_dv {and}} 63 \ leq k \ leq 94 \\\ left \ lfloor {\ frac {k +479} {2}} \ right \ rfloor - \ left \ lfloor {\ frac {k} {8}} \ right \ rfloor \ times 3 {\ t_dv {if}} m = 2 {\ t_dv {and}} k = 1,3,4,5,8,12,13,14,15 \\\ left \ lfloor {\ frac {k + 411} {2}} \ right \ rfloor {\ t_dv {if}} m = 2 {\ t_dv {and}} 78 \ leq k \ leq 94 \ end {ases}}}{\ displaystyle s_ {1} = {\ begin {cases} \ left \ lfloor {\ frac {k + 257} {2}} \ right \ rfloor {\ t_dv {if}} m = 1 {\ t_dv {and}} 1 \ leq k \ leq 62 \\\ left \ lfloor {\ frac {k + 385} {2}} \ right \ rfloor {\ t_dv {if} } m = 1 {\ t_dv {and}} 63 \ leq k \ leq 94 \\\ left \ lfloor {\ frac {k + 479} {2}} \ rig ht \ rfloor - \ left \ lfloor {\ frac {k} {8}} \ right \ rfloor \ times 3 {\ t_dv {if}} m = 2 {\ t_dv {and}} k = 1,3,4, 5,8,12,13,14,15 \\\ left \ lfloor {\ frac {k + 411} {2}} \ right \ rfloor {\ t_dv {if}} m = 2 {\ t_dv {and} } 78 \ leq k \ leq 94 \ end {cases}}}
s 2 = {t + 63, если k нечетное, и 1 ≤ t ≤ 63 t + 64, если k нечетное и 64 ≤ t ≤ 94 t + 158, если k четно {\ displaystyle s_ {2} = {\ begin {ca ses} t + 63 {\ t_dv {if}} k {\ t_dv {нечетно и}} 1 \ leq t \ leq 63 \\ t + 64 {\ t_dv {if}} k {\ t_dv {нечетно и} } 64 \ leq t \ leq 94 \\ t + 158 {\ t_dv {if}} k {\ t_dv {четно}} \ end {cases}}}{\ displaystyle s_ {2} = {\ begin {cases} t + 63 {\ t_dv {if}} k {\ t_dv {нечетное и}} 1 \ leq t \ leq 63 \\ t + 64 {\ t_dv {if}} k {\ t_dv {нечетное и}} 64 \ leq t \ leq 94 \\ t + 158 {\ t_dv {if}} k {\ t_dv {четное}} \ end {cases}}}

В приведенном выше примере s 1 s 2 {\ displaystyle s_ {1} s_ {2}}s_ {1} s_ {2} - двухбайтовая последовательность Shift_JIS-2004, m {\ displaystyle m}m - плоскость (面, men, поверхность) число (1 или 2), k {\ displaystyle k}k - номер строки (区, ku, ward) (1-94) и t {\ displaystyle t }t - номер ячейки (点, десятка, точка) (1-94). Числа ku и десять эквивалентны j 1–32 {\ displaystyle j_ {1} -32}{\ displaystyle j_ {1} -32} и j 2–32 {\ displaystyle j_ {2} -32}{\ displaystyle j_ {2} -32} соответственно, где j 1 j 2 {\ displaystyle j_ {1} j_ {2}}j_ {1} j_ {2} - это двухбайтовая последовательность JIS, указывающая на заданную плоскость.

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

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

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

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

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

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

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

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

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

Первый байт
0123456789ABCDEF
0
1
2!"#$%'()*+,-./
30123456789:;<=>?
4@ABCDEFGHIJKLMNO
5PQRSTUVWXYZ[¥]^_
6`abcdefghijklmno
7pqrstuvwxyz{|}
8
9
A
Bソ
C
D
E
F
Второй байт
0123456789ABCDEF
0
1
2
3
4
5
6
7
8
9
A
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 используются некоторыми расширениями, что приводит к компоновке, подробно описанной в таблице ниже.

Первый байт
0123456789ABCDEF
0
1
2!"#$%'()*+,-./
30123456789:;<=>?
4@ABCDEFGHIJKLMNO
5PQRSTUVWXYZ[¥]^_
6`abcdefghijklmno
7pqrstuvwxyz{|}
8
9
A
Bソ
C
D
E
F
Второй байт
0123456789ABCDEF
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Непечатаемый символ ASCII
Неизмененный символ ASCII
Измененный символ ASCII
Однобайтная катакана половинной ширины
Первый байт двухбайтового символа, используемый JIS X 0208 (и такими расширениями, как JIS X 0213 plane 1)
Первый байт двухбайтового символа, нераспределенный в JIS X 0208, но используемый JIS X 0213 plane 1 или расширениями поставщика
Первый байт двухбайтового символа за пределами JIS X 0208, используется для JIS X 0213, плоскость 2 или для несвязанных расширений
Не используется в качестве первого байта, используется некоторыми однобайтовыми расширениями
Второй байт двухбайтового символа чья первая половина последовательности JIS была нечетной
Второй байт двухбайтового символа, первая половина последовательности JIS которого была четной
Не использовалась в качестве второго байта двухбайтового символа

.

См. также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-08 05:15:44
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте