C3 83 C6 92 C3 82 C2 AA
C3 3F C2 AA
Das erhalten Sie, wenn Sie die Bytefolge als UTF-8 behandeln und sie dann als ISO-8859-1 codieren. 3F
ist ?
, das als Ersatzzeichen eingefügt wurde, weil UTF-8 C6 92
ist U+0192 ƒ
die in ISO-8859-1 nicht existiert. Aber es existiert in der Windows-Codepage 1252 Western European, einer Codierung, die ISO-8859-1 sehr ähnlich ist; dort ist es Byte 0x83.
C3 83 C2 AA
Gehen Sie eine weitere Runde von Treat-as-UTF-8-bytes-and-encode-to-cp1252 durch und Sie erhalten:
C3 AA
was schließlich UTF-8 für ê
ist .
Beachten Sie, dass selbst wenn Sie eine Nicht-XML-HTML-Seite explizit als ISO-8859-1 bereitstellen, Browser tatsächlich die cp1252-Codierung verwenden, aus unangenehmen historischen Gründen.
Leider hat MySQL keine cp1252-Kodierung; latin1
ist (korrekterweise) ISO-8859-1. Sie können die Daten also nicht reparieren, indem Sie sie als latin1 ausgeben und dann als utf8 (zweimal) neu laden. Sie müssten das Skript mit einem Texteditor bearbeiten, der entweder speichern kann (oder z. B. in Python file(path, 'rb').read().decode('utf-8').encode('cp1252').decode('utf-8').encode('cp1252')
).