Как GB18030 отличается от Unicode?

Как китайский код набора GB18030 отличается от Unicode?

Какие специальные методы необходимы для работы с GB18030?

Существуют ли библиотеки с открытым исходным кодом для обработки GB18030?

Ответ 1

Согласно статье статьи в Википедии на GB18030, "GB18030 можно рассматривать как формат преобразования Юникода (т.е. кодирование всех кодов Unicode) который поддерживает совместимость с устаревшим набором символов". То есть все символы Юникода могут быть закодированы в GB18030, но они будут закодированы с помощью разных последовательностей байтов, которые будут сгенерированы с помощью UTF-8 или UTF-16. Обработка кодировки GB18030 не требует дополнительных методов, чем требуется для любой другой кодировки, отличной от Unicode.

Проект ICU - это библиотека с открытым исходным кодом (для C или Java), которая имеет полную поддержку множества различных кодировок, включая GB18030. Информацию о конвертации между различными кодировками в ICU можно найти здесь.

Ответ 2

Какие специальные методы необходимы для работы с GB18030?

Самое интересное в том, что в отличие от UTF-8, GB18030 позволяет использовать ASCII-байты в кодировке многобайтового символа. (Например, 'ß' кодируется как байты 81 30 89 38, который содержит ASCII-кодировку '0' и '8'.) Это означает, что вы не может использовать простую байт-ориентированную функцию find/index.