C3 83 C6 92 C3 82 C2 AA
C3 3F C2 AA
Dat krijg je als je de reeks bytes behandelt als UTF-8 en deze vervolgens codeert als ISO-8859-1. 3F
is ?
, dat is opgenomen als een vervangend teken, omdat UTF-8 C6 92
is U+0192 ƒ
die niet bestaat in ISO-8859-1. Maar het bestaat wel in Windows-codepagina 1252 West-Europees, een codering die erg lijkt op ISO-8859-1; daar is het byte 0x83.
C3 83 C2 AA
Ga door nog een ronde van treat-as-UTF-8-bytes-and-encode-to-cp1252 en je krijgt:
C3 AA
wat ten slotte UTF-8 is voor ê
.
Houd er rekening mee dat zelfs als u een niet-XML HTML-pagina expliciet als ISO-8859-1 aanbiedt, browsers de cp1252-codering daadwerkelijk zullen gebruiken vanwege vervelende historische redenen.
Helaas heeft MySQL geen cp1252-codering; latin1
is (juist) ISO-8859-1. U kunt de gegevens dus niet verbeteren door te dumpen als latin1 en vervolgens opnieuw te laden als utf8 (tweemaal). Je zou het script moeten verwerken met een teksteditor die kan opslaan als (of bijvoorbeeld in Python file(path, 'rb').read().decode('utf-8').encode('cp1252').decode('utf-8').encode('cp1252')
).