Kanji mode (QR)
Kanji mode — режим кодирования QR для японских иероглифов кандзи в кодировке Shift JIS. 13 бит на символ (на 19% компактнее byte mode), до 1817 иероглифов в QR-40.
Что такое Kanji mode
Kanji mode — четвёртый режим кодирования в QR-коде, предназначенный для японских иероглифов кандзи и символов кана в кодировке Shift JIS. Идентификатор — 1000 (двоичный). Режим работает только с двумя диапазонами Shift JIS, закреплёнными за кандзи, и не обрабатывает латиницу, кириллицу, китайский Hanzi или корейский хангыль. Стандарт ISO/IEC 18004 делает его обязательным для всех совместимых кодировщиков.
13-битная упаковка Shift JIS
В Shift JIS иероглиф занимает 2 байта (16 бит). Kanji mode вычитает базовое смещение (0x8140 или 0xC140), умножает старший байт разности на 0xC0, прибавляет младший байт. Результат — число 0–7451 — укладывается в 13 бит. Экономия 3 бита на символ даёт 19% прироста ёмкости против Byte mode. Максимальная ёмкость — 1817 иероглифов (QR-40, уровень L).
Почему создан японцами
Denso Wave разрабатывала QR-код для маркировки автозапчастей Toyota в 1994 году. Производственная документация вела в Shift JIS, поэтому нативная поддержка кандзи с минимальным расходом битов была условием эффективного применения. После принятия ISO/IEC 18004:2000 Kanji mode остался обязательным для всех совместимых устройств.
Альтернативы для других языков
Kanji mode — единственный языкоспецифичный режим стандарта. Для остальных письменностей используют Byte mode + ECI: кириллица — ECI 26 (UTF-8, 2 байта) или ECI 7 (CP1251, 1 байт, компактнее); китайский Hanzi и корейский хангыль — Byte mode + UTF-8. Проприетарный «Hanzi mode» у ряда генераторов выходит за рамки ISO/IEC 18004.
Частые вопросы
Все ли генераторы поддерживают Kanji mode?
Большинство автоматически переключается при обнаружении символов Shift JIS диапазонов 0x8140–0x9FFC и 0xE040–0xEBBF. Часть сервисов использует Byte mode для всего текста — QR-код выходит на 19% крупнее. Если компактность важна, выбирайте генератор с явной поддержкой Kanji mode.
Можно ли смешивать Kanji mode с другими режимами?
Да. QR поддерживает сегментацию: иероглифы — Kanji mode (13 бит), цифры — Numeric (3–4 бита), URL — Byte mode. Алгоритм оптимальной сегментации описан в аннексе J ISO/IEC 18004.
Почему китайские иероглифы не подходят для Kanji mode?
Kanji mode привязан к числовым диапазонам Shift JIS. Китайский Hanzi использует GB2312/GBK — коды не совпадают даже для графически идентичных знаков. Корректный вариант — Byte mode + UTF-8.
Есть ли аналог Kanji mode для русского языка?
Нет. ISO/IEC 18004 не предусматривает сжатого режима для кириллицы. Для компактного QR с русским текстом используйте Byte mode + ECI 7 (CP1251): 1 байт на символ против 2 байт в UTF-8.