2012-03-09 21 views
5

Cuando extraigo datos de una base de datos MySQL, algunos de los resultados tienen caracteres especiales, cuando se abren, p. Ej. emacs decodifica a \240 y \346.Cómo convertir caracteres especiales a UTF-8?

Cuando se muestra en un terminal de UTF-8, los caracteres especiales se muestra como

Así que la codificación utilizada costuras de usar sólo 1 byte por carácter.

Puedo, por ejemplo, vea que \346 debe ser æ.

Pregunta

¿El Perl tienen un módulo que puede codificar estos caracteres especiales a UTF-8?

+0

http://blog.jonnay.net/archives/820-Emacs-and-UTF-8-Encoding.html? –

+0

La pregunta no es sobre emacs. Me gustaría que Perl codifique el contenido en UTF-8. –

+1

¿ha configurado la terminal para mostrar utf-8? –

Respuesta

3

Usa Encode::decode para decodificar tus datos desde cualquier codificación en el formato interno de Perl.

Luego, al escribir los datos en un archivo, configure la capa 'utf8' para que los datos se escriban en UTF-8.

use Encode; 

my $data_from_database = ...; 

my $perl_data = decode('ISO-8859-1', $data_from_database); 

binmode STDOUT, ':utf8'; 

print $perl_data; 
Cuestiones relacionadas