Shift JIS
Shift JIS — это кодировка символов для японского языка, разработанная компанией Microsoft в 1993 году на основе более ранних стандартов, таких как JIS X 0208 и JIS X 0201. Она представляет собой однобайтовую кодировку с переменной длиной символа, где символы ASCII (0x00–0x7F) кодируются одним байтом, а японские иероглифы (кандзи), хирагана, катакана и другие символы — двумя байтами. Shift JIS является одной из наиболее распространённых кодировок для японского текста в операционных системах Windows, на веб-сайтах и в компьютерных играх, особенно до начала 2010-х годов, когда её постепенно начали вытеснять Unicode (UTF-8).
История
Предыстория: ранние японские кодировки
До появления Shift JIS для представления японского текста использовались несколько стандартов. Основными из них были JIS X 0201 (однобайтовая кодировка для катаканы и ASCII) и JIS X 0208 (двухбайтовая кодировка для кандзи, хираганы и катаканы). Однако эти стандарты не были совместимы друг с другом: JIS X 0201 занимала диапазон 0x21–0x7E, а JIS X 0208 — диапазон 0x21–0x7E для первого и второго байтов, что приводило к конфликтам при попытке использовать их вместе. Кроме того, в ранних кодировках, таких как EUC-JP (Extended Unix Code for Japanese), символы ASCII и JIS X 0201 кодировались одним байтом, а JIS X 0208 — двумя байтами с использованием старшего бита, что делало их несовместимыми с ASCII в старших байтах.
Разработка Microsoft
В начале 1990-х годов компания Microsoft, стремясь обеспечить поддержку японского языка в своей операционной системе Windows 3.1, разработала собственную кодировку, которая была названа Shift JIS. Название отражает принцип кодирования: символы JIS X 0208 «сдвигаются» (shift) в старшие диапазоны, чтобы избежать конфликтов с ASCII и JIS X 0201. Первая версия Shift JIS была представлена в 1993 году вместе с Windows 95, хотя сама кодировка использовалась и в более ранних версиях Windows для японского рынка (Windows 3.1J). В 1997 году она была стандартизирована как JIS X 0208:1997, а позже — как часть стандарта Unicode.
Распространение и упадок
Shift JIS быстро стала доминирующей кодировкой для японского текста в персональных компьютерах, особенно в Windows, где она использовалась по умолчанию для японской локализации. Она также широко применялась на веб-сайтах (до 2010-х годов около 30% японских сайтов использовали Shift JIS), в компьютерных играх (например, ранние игры для Windows и Sega Saturn), а также в текстовых редакторах и базах данных. Однако с ростом популярности Unicode, особенно UTF-8, которая поддерживает все символы всех языков в одной кодировке, Shift JIS начала уступать позиции. К 2020-м годам её использование сократилось до менее 1% веб-сайтов, хотя она всё ещё встречается в устаревших системах, некоторых играх и документах.
Принцип кодирования
Структура
Shift JIS использует переменную длину символа:
- Однобайтовые символы (диапазон 0x00–0x7F): соответствуют ASCII (латиница, цифры, знаки препинания) и частично JIS X 0201 (катакана в диапазоне 0xA1–0xDF).
- Двухбайтовые символы (диапазон 0x81–0x9F и 0xE0–0xEF для первого байта, 0x40–0x7E и 0x80–0xFC для второго байта): кодируют кандзи, хирагану, катакану, а также дополнительные символы (знаки препинания, математические символы и т.д.).
Первый байт двухбайтового символа всегда находится в диапазоне 0x81–0x9F или 0xE0–0xEF, что позволяет однозначно отличать его от однобайтовых символов (0x00–0x7F). Второй байт может быть в диапазоне 0x40–0x7E (кроме 0x7F) или 0x80–0xFC. Это означает, что второй байт может совпадать с ASCII-символами (например, 0x41 — буква 'A'), но декодер распознаёт его как часть двухбайтового символа, если первый байт указывает на это.
Таблица кодирования
Shift JIS включает:
- JIS X 0201 (однобайтовая катакана): символы 0xA1–0xDF (94 символа).
- JIS X 0208 (двухбайтовые символы): 6879 символов, включая 6355 кандзи, 83 хираганы, 86 катаканы, 524 знака препинания и символа.
- Дополнительные символы (расширения): некоторые версии Shift JIS включают символы из JIS X 0212 (редкие кандзи) и пользовательские символы.
Примеры
- Символ «あ» (хирагана 'a'): кодируется как 0x82 0xA0.
- Символ «日» (кандзи 'солнце'): кодируется как 0x93 0xFA.
- Символ «A» (латиница): кодируется как 0x41 (один байт).
Версии и расширения
Microsoft Shift JIS (CP932)
Наиболее распространённая версия Shift JIS — это кодовая страница 932 (CP932) от Microsoft, которая включает дополнительные символы, отсутствующие в стандартном JIS X 0208, такие как:
- Символы из JIS X 0212 (около 5800 редких кандзи).
- Символы из Windows-1252 (например, тире, кавычки).
- Пользовательские символы (NEC, IBM и др.).
CP932 используется в Windows для японского языка и отличается от стандартной Shift JIS (JIS X 0208:1997) наличием этих расширений. Она также включает символы для совместимости с более ранними кодировками, такими как NEC PC-9801.
Другие версии
- Shift_JIS-2004: обновлённая версия, соответствующая JIS X 0213:2004, которая добавляет около 3000 новых кандзи и символов.
- MacJapanese: версия, используемая в macOS (ранее Mac OS), с некоторыми отличиями в кодировке символов (например, символ обратной косой черты \ кодируется как ¥).
- IBM-932: версия, используемая в системах IBM, с дополнительными символами для мэйнфреймов.
Применение
Операционные системы
- Microsoft Windows: Shift JIS (CP932) была основной кодировкой для японской версии Windows до Windows 10, где по умолчанию используется Unicode (UTF-16). Однако многие старые приложения и драйверы всё ещё используют Shift JIS.
- macOS: до версии 10.5 (Leopard) использовала MacJapanese, но позже перешла на UTF-8.
- Linux: поддержка Shift JIS реализована через библиотеки iconv и ICU, но используется редко (обычно для совместимости с устаревшими файлами).
Веб-сайты
В 1990-х и 2000-х годах Shift JIS была одной из самых популярных кодировок для японских веб-сайтов, наряду с EUC-JP и UTF-8. Она поддерживалась всеми основными браузерами (Internet Explorer, Firefox, Chrome, Safari). Однако с 2010-х годов UTF-8 стала стандартом, и к 2024 году менее 0,5% сайтов используют Shift JIS (по данным W3Techs).
Компьютерные игры
Многие японские компьютерные игры, особенно выпущенные до 2010 года, используют Shift JIS для хранения текста. Это связано с тем, что кодировка была стандартом для Windows и консолей (например, Sega Saturn, Dreamcast). Примеры игр:
- «Final Fantasy VII» (1997) — текст на японском языке закодирован в Shift JIS.
- «The Legend of Zelda: Ocarina of Time» (1998) — японская версия использует Shift JIS.
- «Persona 4» (2008) — текст на японском языке также в Shift JIS.
Документы и базы данных
Shift JIS широко использовалась в текстовых редакторах (например, Microsoft Word на японском языке), базах данных (например, Oracle, MySQL) и файловых системах (например, FAT32 с японскими именами файлов). До сих пор многие старые документы, особенно созданные в 1990-х годах, остаются в Shift JIS.
Проблемы и критика
Несовместимость с Unicode
Shift JIS не поддерживает символы других языков (кириллицу, арабский, китайский) без использования дополнительных кодировок. Это делает её неудобной для многоязычных приложений. Кроме того, Shift JIS не поддерживает символы из стандарта Unicode, такие как эмодзи (до версии Shift_JIS-2004, которая добавила некоторые символы, но не эмодзи).
Проблемы с кодированием
- Двухбайтовые символы могут содержать байты, совпадающие с ASCII: второй байт двухбайтового символа может быть в диапазоне 0x40–0x7E, что включает буквы и цифры ASCII. Это может приводить к ошибкам при обработке текста, если декодер неправильно определяет границы символов.
- Отсутствие стандартизации: разные версии Shift JIS (CP932, MacJapanese, IBM-932) имеют различия в кодировке некоторых символов, что может вызывать проблемы при переносе текста между системами.
- Ограниченный набор символов: стандартная Shift JIS (JIS X 0208) содержит только 6879 символов, что недостаточно для современных нужд (например, для редких кандзи или научных символов).
Устаревание
С переходом на Unicode, особенно UTF-8, Shift JIS стала считаться устаревшей. UTF-8 поддерживает все символы всех языков, не имеет проблем с совместимостью и занимает меньше места для текстов на латинице. Однако Shift JIS всё ещё используется в некоторых устаревших системах, особенно в Японии, где многие предприятия и государственные учреждения имеют старые базы данных и приложения.
Интересные факты
- Shift JIS иногда называют «кодировкой Microsoft» из-за её тесной связи с Windows, хотя она была разработана на основе стандартов JIS.
- В японской версии Windows обратная косая черта (\) отображается как знак иены (¥) из-за особенностей кодировки Shift JIS. Это связано с тем, что символ 0x5C в JIS X 0201 соответствует знаку иены, а не обратной косой черте.
- Shift JIS используется в некоторых японских текстовых играх (визуальных новеллах), таких как «Fate/stay night» (2004), где текст хранится в этой кодировке для экономии места.
Источники
- JIS X 0208:1997 — Japanese Industrial Standard for 7-bit and 8-bit coded character sets.
- Microsoft Corporation. «Code Page 932 — Windows Japanese Shift-JIS». MSDN Library.
- Unicode Consortium. «The Unicode Standard, Version 15.0» (2022).
- W3Techs. «Usage of character encodings for websites» (2024).
- «Shift JIS — Encoding Standard». WHATWG (2023).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →