2012-03-09 87 views
5

当我从MySQL数据库中提取数据时,某些输出在打开时会有特殊字符 。 emacs解码为\240\346如何将特殊字符转换为UTF-8?

当在UTF-8终端所示,特殊字符被示出为

所以使用的编码接缝只使用每个字符1个字节。

我可以例如看到\346应该是æ

问题

还包括Perl具有能够编码这些特殊字符以UTF-8的模块?

+0

http://blog.jonnay.net/archives/820-Emacs-and-UTF-8-Encoding.html? – 2012-03-09 15:51:37

+0

问题不在于emacs。我希望Perl将内容编码为UTF-8。 – 2012-03-09 15:58:13

+1

你有没有设置终端来显示utf-8? – 2012-03-09 16:05:32

回答

3

使用Encode::decode来解码您的数据从它的任何编码到Perl的内部格式。

然后,写出到文件中的数据时,设置'utf8'层以使数据以UTF-8写入。

use Encode; 

my $data_from_database = ...; 

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

binmode STDOUT, ':utf8'; 

print $perl_data;