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

GB18030: обязательный китайский стандарт, охватывающий весь Юникод

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

В истории кодировок есть необычный случай, когда национальная кодировка не уступила Юникоду, а стала его полноправным способом записи. GB18030, государственный стандарт Китая, способна представить любой символ Юникода, от латинской буквы до самого редкого иероглифа и смайлика. При этом она полностью совместима с GBK, на которой работали миллионы компьютеров. Стандарт впервые утвердили в 2000 году, а затем обновили в 2005 и 2022 годах.

Главная особенность GB18030 заключается в том, что поддержка этой кодировки обязательна для программ, продаваемых в Китае. Это требование заставило крупные компании, включая Microsoft, Apple и Oracle, добавить её в свои операционные системы, базы данных и программы. Благодаря этому GB18030 поддерживается практически везде, хотя за пределами Китая используется редко.

Устроена кодировка в три уровня. Символы ASCII записываются одним байтом. Символы, которые были в GBK, записываются двумя байтами точно так же, как и в GBK, поэтому любой текст в GBK одновременно является правильным текстом в GB18030. Все остальные символы Юникода записываются четырьмя байтами по особой схеме, где второй и четвёртый байты являются цифрами от 0 до 9. Например, смайлик с улыбкой записывается как последовательность байтов 94 39 FC 36.

Такая схема позволила совместить два, казалось бы, несовместимых требования: сохранить совместимость со старой кодировкой и при этом поддержать все символы мира. В отличие от GBK, в GB18030 нет символов, которые нельзя было бы записать, и при переводе из Юникода в GB18030 ничего не теряется. Это делает её полноценной альтернативой UTF-8, хотя и гораздо более сложной в реализации.

Для китайского текста GB18030 оказывается компактнее UTF-8: большинство иероглифов занимает в ней два байта, а в UTF-8 три. Для текстов на других языках, наоборот, многие символы требуют четырёх байтов, тогда как в UTF-8 им хватает двух. Поэтому GB18030 выгодна только для текстов, где преобладают китайские иероглифы.

Ошибки при чтении GB18030 в другой кодировке выглядят так же, как и для GBK. Китайский текст, прочитанный как Windows-1252, превращается в набор латинских букв с акцентами, а при чтении в Windows-1251 появляется кириллица вперемешку с символами. Если текст в GB18030 содержит символы, которых нет в GBK, и его прочитать как GBK, на их месте появятся цифры и случайные иероглифы, поскольку четырёхбайтовые последовательности содержат байты цифр.

Сегодня китайские сайты в большинстве своём работают в UTF-8, но GB18030 остаётся обязательной для поддержки программами и широко используется в государственных и банковских системах Китая. Если вы получили китайский текст, который не читается в GBK или содержит странные цифры среди иероглифов, укажите GB18030 исходной кодировкой и преобразуйте текст в UTF-8.