C3 83 C6 92 C3 82 C2 AA
C3 3F C2 AA
Това е, което получавате, ако третирате последователността от байтове като UTF-8, след което я кодирате като ISO-8859-1. 3F
е ?
, който е включен като заместващ знак, тъй като UTF-8 C6 92
е U+0192 ƒ
което не съществува в ISO-8859-1. Но той съществува в кодовата страница на Windows 1252 Western European, кодиране, много подобно на ISO-8859-1; там е байт 0x83.
C3 83 C2 AA
Преминете през друг кръг от третиране като-UTF-8-байта и-кодиране към-cp1252 и ще получите:
C3 AA
което накрая е UTF-8 за ê
.
Имайте предвид, че дори ако обслужвате не-XML HTML страница изрично като ISO-8859-1, браузърите всъщност ще използват кодирането cp1252 поради неприятни исторически причини.
За съжаление MySQL няма cp1252 кодиране; latin1
е (правилно) ISO-8859-1. Така че няма да можете да коригирате данните, като изхвърлите като latin1 и след това презаредите като utf8 (два пъти). Ще трябва да обработите скрипта с текстов редактор, който може да записва като едно от двете (или например в Python file(path, 'rb').read().decode('utf-8').encode('cp1252').decode('utf-8').encode('cp1252')
).