3

У меня есть текст на упрощенном китайском, который при чтении как UTF-8 начинается с ´ÓºÜ¾ÃÒÔÇ°¿ªÊ¼ , который онлайн-инструмент от MandarinTools (первый результат поиска для Repair Corrupted Chinese Email) исправляет правильный 从很久以前开始 , но Непонятно, как это исправить. Из использования онлайн-инструмента и шестнадцатеричного редактора я знаю, что каждый символ кодируется как 32-битная фиксированная длина:

c2b4 c393 从
c2ba c39c 很
c2be c383 久
c392 c394 以
c387 c2b0 前
c2bf c2aa 开
c38a c2bc 始

Это также показывает, что символ кодируется как два 16-битных слова в диапазоне c2 ** - c3 **. В UTF-16 первое 16-битное слово всегда равно 0 для этих символов. UTF-8 использует только 24 бита для каждого символа, а кодовая страница 936 использует только 16 бит для каждого символа. Какой метод я могу использовать для определения правильного преобразования кодировки?

представление utf-8:

e4bb 8e 从
e5be 88 很
e4b9 85 久
e4bb a5 以
e589 8d 前
e5bc 80 开
e5a7 8b 始

cp936 представление:

b4d3 从
badc 很
bec3 久
d2d4 以
c7b0 前
bfaa 开
cabc 始

1 ответ1

1

´ÓºÜ¾ÃÒÔÇ°¿ªÊ¼ текст ´ÓºÜ¾ÃÒÔÇ ° ¿ªÊ¼ имеет длину 14 символов. Поскольку правильный текст упрощенного китайского 从很久以前开始 7 символов, это сразу говорит о том, что каждый символ упрощенного китайского языка может соответствовать двум символам в поврежденном тексте.

Символы в поврежденном тексте имеют следующие шестнадцатеричные эквиваленты в UTF-16 (а также с cp936, как показано в OP):

´ => b4
Ó => d3
º => ba
Ü => dc
¾ => be
à => c3
Ò => d2
Ô => d4
Ç => c7
° => b0
¿ => bf
ª => aa
Ê => ca
¼ => bc

Я сделал этот перевод, используя простую Java-программу, но есть онлайн-сайты, которые могут делать то же самое:

упрощенный китайский

Таким образом, все, что нужно сделать в Mandarin Tool, это объединить шестнадцатеричные значения первых двух поврежденных символов, чтобы получить первый упрощенный китайский символ с использованием CP 936, и так далее:

´ + Ó => b4 + d3 => b4d3 => 从
º + Ü => ba + dc => badc => 很
¾ + Ã => be + c3 => bec3 => 久
Ò + Ô => d2 + d4 => d2d4 => 以
Ç + ° => c7 + b0 => c7b0 => 前
¿ + ª => bf + aa => bfaa => 开
Ê + ¼ => ca + bc => cabc => 始 

Предположительно, Mandarin Tool проверяет, что преобразование поврежденного текста действительно приводит к правильному тексту на упрощенном китайском языке.

Каждое значение cp936 для упрощенного китайского языка затем может быть сопоставлено с его кодовой точкой Unicode. Например, = 0xB4D3 = кодовая точка 0x4ECE. И, получив код Unicode, вы можете преобразовать его в любую кодировку (cp936, GB 18030, UTF-16 и т.д.).

Один вопрос, который мне неясен в вашем вопросе, - это первый список, показывающий 32-битные представления каждого символа упрощенного китайского языка (например, c2b4 c393 从). Это выглядит неправильно, поскольку кодовая точка для символа (например, 0x4ECE для ) и его 32-битное представление - это одно и то же. Или я что-то недопонимаю?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .