2012-07-18 26 views
8

Tengo una fuente de datos de texto que incluye la secuencia de bytes c3 82 c2 bf. En contexto, creo que se supone que es un símbolo griego de Phi (Φ).¿Qué codificación de caracteres es c3 82 c2 bf?

De todos modos, no puedo entender qué codificación está siendo utilizada; Estoy escribiendo un script de Python para procesar estos datos en una base de datos que espera Unicode, y arroja una excepción sobre esta secuencia de datos en particular.

¿Alguna sugerencia sobre cómo manejarlo?

+1

¿Se puede publicar más datos de muestra codificados con la codificación mágica? ¿Qué te hace pensar que es una sola letra? En – vcsjones

+0

contexto es "flujo magnético \ xc3 \ x82 \ xc2 \ XBF fa", que probablemente debería ser Φ fa

+0

Ese es el único fracaso de los datos hasta el momento, por lo que sólo tiene que ir en. –

Respuesta

17

Interpretado como UTF-8, c3 82 es "Â" U + 00C2 y c2 bf es "¿" U + 00BF, lo cual no tiene mucho sentido, pero tiene datos UTF-8 técnicamente válidos, por lo que no debería ser reportado como un error de datos a nivel de personaje. Interpretado como UTF-16, son las sílabas de Hangul y posiblemente un ideograma de CJK, dependiendo de la endianidad, pero aún datos formalmente válidos, aunque probablemente no sea lo que se quiso decir.

Esto suena como el resultado de una doble conversión, pero es difícil hacer conjeturas. Si representa Φ, entonces la forma UTF-16 es 03 A6 o A6 03 y la forma UTF-8 es CE A6, que en realidad no se parecen a los datos reales. La información sobre el origen de los datos puede ayudar a adivinar qué transcodificaciones pueden haber sucedido.

+1

Parece una doble codificación U + 00BF, MARCA DE PREGUNTA INVERTIDA. –

+2

@ Keith Thompson, ¡eso es! Si tienes U + 00BF y tu codificación UTF-8, obtienes los bytes C2 BF.Si interpreta erróneamente estos bytes como U + 00C2 y U + 00BF y UTF-8 los codifica, obtendrá C3 82 C2 BF, como en los datos reales. –

+0

Sigue siendo un problema de donde viene "¿". Normalmente esperaría que fuera el resultado de otra conversión errónea (presumible entre codificaciones de 8 bits), pero no me puedo imaginar lo que podría ser. –

10

Probablemente se trate de una conversión doble del carácter Ñ.

Ñ personaje en UTF-8 es: 0xc391.

Si intenta convertir de LATIN-1 a UTF-8 la Ñ personaje que ya está codificado en UTF-8 , obtendrá: 0xc382c2bf.

¿Por qué?

  1. 0xc382 es UTF-8 traducción del LATIN-10xc3 carácter à (A con tilde)
  2. 0xc2bf es ¿ carácter que es lo que obtienes cuando no se puede convertir a un personaje de LATIN-1 (0x91 es un carácter no válido en AMÉRICA-1
+0

Gracias pero nada que ver con Ñ, este es un documento de ingeniería donde Φ tiene sentido. –

+0

Es muy probable que '(A con tilde) + (¿upside?)' Sea el resultado de _una_ doble conversión inadvertida. Como tal, no habría forma de invertir el camino de regreso al personaje original. – ashnazg

2

FWIW, terminé con c3 82 c2 bf de  . No profundicé en las transformaciones porque pude simplemente descartar esa parte del código. Baste decir que   estaba en una plantilla de correo electrónico html que fue procesada por un plugin wordpress (php).

Cuestiones relacionadas