我需要在Perl中用UTF-8模式编写一个文件。我该如何创造呢?
在这种情况下,任何人都可以提供帮助吗?
我试着这样做,找到我的下面代码,
use utf8;
use open ':encoding(utf8)';
binmode(FH, ":utf32");
open(FH, ">test11.txt");
print FH "something Çirçös";
创建一个UTF-8格式的文件。但我需要确定是否从这个脚本发生了这种情况。因为如果我在不使用utf8编码的情况下编写文件,文件内容将自动采用UTF-8格式。
答案 0 :(得分:6)
你想要
use utf8; # Source code is encoded using UTF-8.
open(my $FH, ">:encoding(utf-8)", "test11.txt")
or die $!;
print $FH "something Çirçös";
或
use utf8; # Source code is encoded using UTF-8.
use open ':encoding(utf-8)'; # Sets the default encoding for handles opened in scope.
open(my $FH, ">", "test11.txt")
or die $!;
print $FH "something Çirçös";
注意:
utf-8
(不区分大小写),而不是utf8
(特定于Perl的编码)。my
)vars。如果你不做编码指令,你可能会很幸运并得到正确的输出(以及一个"宽字符"警告)。不要指望这一点。你永远不会幸运。
# Unlucky.
$ perl -we'use utf8; print "é"' | od -t x1
0000000 e9
0000001
# Lucky.
$ perl -we'use utf8; print "é♡"' | od -t x1
Wide character in print at -e line 1.
0000000 c3 a9 e2 99 a1
0000005
# Correct.
$ perl -we'use utf8; binmode STDOUT, ":encoding(utf-8)"; print "é♡"' | od -t x1
0000000 c3 a9 e2 99 a1
0000005