2010-11-14 14 views
7

Tengo un archivo lleno de esos códigos, y quiero "traducirlo" a caracteres normales (quiero decir, un archivo completo). ¿Cómo puedo hacerlo?Ã © y otros códigos

Muchas gracias de antemano.

+0

¿Qué quiere decir exactamente? ¿Qué ves cuando abres el archivo en un editor hexadecimal? –

+0

Perdón por mi mala explicación. Quiero decir, con la función utf8_decode() de PHP, puedo mostrar el valor real, pero necesito cambiarlo a todo el archivo. ¿Cómo hacerlo? – Matts

Respuesta

16

Parece que originalmente tenía un archivo UTF-8 que se ha interpretado como una codificación de 8 bits (por ejemplo, ISO-8859-15) y codificado por entidad. Digo esto porque la secuencia C3A9 parece bastante plausible UTF-8 encoding sequence.

Primero tendrá que decodificar la entidad, luego tendrá una codificación UTF-8 nuevamente. Luego puede usar algo como iconv para convertir a una codificación de su elección.

para trabajar a través de su ejemplo:

  • & # XC3; & # xA9; se decodifica como la secuencia de bytes 0xC3A9
  • 0xC3A9 = 11000011 10101001 en binario
  • el principal 110 en el primer octeto nos dice que esto podría interpretarse como una secuencia de dos bytes UTF-8. Como el segundo octeto comienza con 10, estamos viendo algo que podemos interpretar como UTF-8. Para ello, tomamos los últimos 5 bits del primer octeto, y los últimos 6 bits del segundo octeto ...
  • Así, interpretado como UTF8 es 00011101001 = E9 = E (LATIN SMALL LETTER E WITH ACUTE)

Menciona que quiere manejar esto con PHP, algo como esto podría hacerlo por usted:

//to load from a file, use 
//$file=file_get_contents("/path/to/filename.txt"); 
//example below uses a literal string to demonstrate technique... 

$file="&Précédent is a French word"; 
$utf8=html_entity_decode($file); 
$iso8859=utf8_decode($utf8); 

//$utf8 contains "Précédent is a French word" in UTF-8 
//$iso8859 contains "Précédent is a French word" in ISO-8859 
+0

+1 gran respuesta. – Sarfraz

+0

¿Pero cómo cambiar un archivo completo? Quiero decir, es un archivo con texto "común" y secuencias codificadas ... – Matts

+0

Si esta técnica no funciona para su archivo, sugiero que incluya un pequeño volcado hexadecimal de una muestra relevante de su archivo. –