2012-03-09 18 views
5

Quando estrae i dati da un database MySQL, alcuni output hanno caratteri speciali, quando aperti in ad es. emacs decodifica a \240 e \346.Come convertire caratteri speciali in UTF-8?

Quando presenti in un terminale UTF-8, i caratteri speciali è mostrato come

Quindi le cuciture codifica utilizzata per utilizzare solo 1 byte per carattere.

Posso ad es. vedere che \346 deve essere æ.

Domanda

Il Perl ha un modulo in grado di codificare questi caratteri speciali in UTF-8?

+0

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

+0

La domanda non riguarda emacs. Vorrei che Perl codificasse il contenuto in UTF-8. –

+1

hai impostato il terminale per mostrare utf-8? –

risposta

3

Utilizzare Encode::decode per decodificare i dati da qualsiasi codifica in cui si trova nel formato interno di Perl.

Quindi, quando si scrivono i dati su un file, impostare il livello 'utf8' per scrivere i dati in UTF-8.

use Encode; 

my $data_from_database = ...; 

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

binmode STDOUT, ':utf8'; 

print $perl_data;