C3 83 C6 92 C3 82 C2 AA
C3 3F C2 AA
Eso es lo que obtiene si trata la secuencia de bytes como UTF-8 y luego la codifica como ISO-8859-1. 3F
es ?
, que se ha incluido como carácter de sustitución, porque UTF-8 C6 92
es U+0192 ƒ
que no existe en ISO-8859-1. Pero sí existe en la página de códigos de Windows 1252 de Europa Occidental, una codificación muy similar a la ISO-8859-1; allí, es el byte 0x83.
C3 83 C2 AA
Realice otra ronda de tratar como UTF-8-bytes-y-encode-to-cp1252 y obtendrá:
C3 AA
que es, finalmente, UTF-8 para ê
.
Tenga en cuenta que incluso si publica una página HTML que no es XML explícitamente como ISO-8859-1, los navegadores en realidad usarán la codificación cp1252, debido a razones históricas desagradables.
Desafortunadamente, MySQL no tiene una codificación cp1252; latin1
es (correctamente) ISO-8859-1. Por lo tanto, no podrá arreglar los datos volcando como latin1 y luego recargando como utf8 (dos veces). Tendría que procesar el script con un editor de texto que pueda guardar como (o, por ejemplo, en Python file(path, 'rb').read().decode('utf-8').encode('cp1252').decode('utf-8').encode('cp1252')
).