Конвертер кодировок текста

Shift_JIS: японская кодировка, давшая миру слово "моджибаке"

Перекодировать текст из Shift_JIS ↓

Слово "кракозябры" известно каждому русскоязычному пользователю, а в остальном мире для того же явления используется японский термин "моджибаке", 文字化け, что буквально означает "превращение символов". То, что термин пришёл именно из Японии, неудивительно. Японский язык использует сразу три системы письма: иероглифы кандзи, слоговые азбуки хирагану и катакану, а также латиницу. Кодировок для него было создано множество, и самой распространённой среди них стала Shift_JIS.

Shift_JIS была разработана в начале 1980-х годов компаниями ASCII Corporation и Microsoft для персональных компьютеров. Её основой стал японский стандарт JIS X 0208, содержащий около 7 тысяч символов, в том числе 6355 иероглифов. Название "Shift" отражает главную идею кодировки: коды иероглифов сдвинуты так, чтобы они не пересекались с однобайтовыми символами, уже использовавшимися в японских компьютерах.

Дело в том, что задолго до появления Shift_JIS в Японии существовала однобайтовая кодировка JIS X 0201, в которой нижняя половина содержала латиницу, а верхняя половина отводилась под катакану в половинной ширине. Shift_JIS сохранила эти однобайтовые символы и добавила двухбайтовые для иероглифов и полноширинных знаков. Первый байт двухбайтовой последовательности находится в диапазонах, не занятых однобайтовыми символами, поэтому программа всегда может отличить один тип символа от другого.

Ценой совместимости стали знаменитые проблемы. Второй байт иероглифа может совпадать с кодами символов ASCII, в том числе с обратной косой чертой. Например, катакана "ソ" и иероглиф "表" содержат во втором байте код обратной косой черты. Программы, которые воспринимали этот байт как служебный символ, портили текст, и японские программисты долгие годы сталкивались с так называемой "проблемой ソ". Кроме того, в японской версии JIS X 0201 на месте обратной косой черты стоит знак иены, поэтому в японских системах пути к файлам выглядят как "C:¥Windows".

Ошибки при чтении японского текста в неправильной кодировке хорошо знакомы самим японцам. Слово "文字化け" в Shift_JIS, прочитанное как Windows-1252, превращается в "•¶Žš‰»‚¯", а при чтении в Windows-1251 в "•¶Ћљ‰»‚Ї". Если текст в UTF-8 прочитать как Shift_JIS, получится смесь иероглифов, полуширинной катаканы и знаков замены: то же слово выглядит как "譁�ュ怜喧縺�".

В Shift_JIS, как и в китайских кодировках, есть кириллица. Русские буквы записываются двумя байтами, и первый байт у всех них одинаков. Поэтому русский текст, набранный в японской программе, при чтении в другой кодировке превращается в повторяющиеся пары символов.

В Windows эта кодировка известна как кодовая страница 932, которая содержит дополнительные символы, добавленные Microsoft и японскими производителями. Сегодня японские сайты в большинстве своём перешли на UTF-8, но Shift_JIS остаётся очень распространённой в документах, электронной почте, играх, программах и файлах субтитров. Если в японском тексте вместо иероглифов стоят латинские буквы с акцентами, кириллица или бессмысленные иероглифы с полуширинной катаканой, укажите Shift_JIS исходной кодировкой и преобразуйте текст в UTF-8.