У вас есть double Mojibake , данные искажены с помощью неправильных кодеков.
На самом деле Korean , имя:
신영 안
или, при использовании HTML сущностей, этот должен быть закодирован в
신영 안
. Он переводит на английский sh как Шин-Янг .
Когда кодируется в UTF-8 и группируется по входной кодовой точке, а затем отображается с использованием шестнадцатеричных цифр, вы получите это:
ec 8b a0
ec 98 81
20
ec 95 88
Чтобы получить результат, который у вас есть, кто-то должен иметь:
Декодировать вышеуказанные данные UTF-8 с использованием Windows кодовая страница 1252 , получая
ì‹<A0>ì˜<81> 안
(где <A0>
- символ неразрывного пробела, а <81>
- недопустимый байт CP1252, но это часто игнорируется во многих декодерах; я включил их в эту запись, поскольку в противном случае они не были бы для печати)
Снова закодировал получающийся беспорядок в UTF-8, чтобы получить следующие байтовые значения:
c3 ac e2 80 b9 c2 a0
c3 ac cb 9c c2 81
20
c3 ac e2 80 a2 cb 86
(группировка m устанавливает правильный код UTF-8 (см. выше)
Второй раз декодировал эти байты UTF-8, используя тот же код Windows CP1252 c, на этот раз получая:
ì‹Â<A0>ì˜Â<81> 안
(с одинаковыми примечаниями к символам <A0>
и <81>
)
Окончательно закодировал получившиеся символы в HTML сущности:
신영 안
Если у вас установлено Python, то библиотека ftfy
может «восстановить» текст, подобный этому, за один шаг:
>>> import ftfy
>>> sample = '신영 안'
>>> ftfy.ftfy(sample)
'신영 안'
Я использовал эту библиотеку, чтобы сообщить мне, какие кодеки были использованы, а также использовать ее небрежный декодер CP1252 для создания описанных выше декодеров.
Например, для вашего ввода я использовал:
>>> ftfy.fixes.fix_encoding_and_explain(ftfy.fixes.unescape_html(sample))
('신영 안', [('encode', 'sloppy-windows-1252', 0), ('decode', 'utf-8', 0), ('encode', 'sloppy-windows-1252', 0), ('decode', 'utf-8', 0)])
чтобы увидеть план ремонта, и перевернул его, чтобы объяснить, как в первую очередь был произведен моджибаке.