如何使用Perl正确地将非英文字符打印到文件?

时间:2012-01-19 03:00:20

标签: perl

我正在使用Perl将从一个文件读取的一些数据打印到另一个文件。有时我会读非英文字符,例如é等重音字符。但是,做:

print FILE_HANDLER "... $variable ...";

不保留重音符号。 é实际上被打印为“Ô。

如何将这些字符打印出来以便妥善保存?有关更多信息,我打开和写入的文件都是这样完成的:

open READ_FILE, "<", "file.xml" or die $!;
open WRITE_FILE, ">", "file.txt" or die $!;

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

perldoc -f open说:

您可以(并且通常应该)使用open的三参数形式来指定I / O层(有时称为“学科”)以应用于影响输入和输出处理方式的句柄(请参阅打开和PerlIO了解更多详情)。例如:

 open(my $fh, "<:encoding(UTF-8)", "filename")
 || die "can't open UTF-8 encoded filename: $!";

打开包含Unicode字符的UTF8编码文件;见perluniintro