我正在尝试使用utf8
杂注编写一个Perl脚本,并且得到了意想不到的结果。我用的是MacOSX10.5(豹),我用的是TextMate。我的编辑器和操作系统的所有设置都默认写入utf-8格式的文件。
但是,当我在文本文件中输入以下内容,将其另存为".pl“并执行它时,我得到友好的”带问号的菱形“,而不是非ASCII码字符。
#!/usr/bin/env perl -w
use strict;
use utf8;
my $str = 'Çirçös';
print( "$str\n" );
知道我做错了什么吗?我希望在输出中得到‘�irçös’,但我得到的却是'�ir��s‘。
发布于 2009-03-09 20:47:57
发布于 2009-04-21 13:02:51
TMTOWTDI,选择最适合您工作方式的方法。我使用环境方法,所以我不需要考虑它。
export PERL_UNICODE=SDL
perl -CSDL -le 'print "\x{1815}"';
或使用binmode
binmode(STDOUT, ":utf8"); #treat as if it is UTF-8
binmode(STDIN, ":encoding(utf8)"); #actually check if it is UTF-8
或使用PerlIO
open my $fh, ">:utf8", $filename
or die "could not open $filename: $!\n";
open my $fh, "<:encoding(utf-8)", $filename
or die "could not open $filename: $!\n";
或者使用open pragma
use open ":encoding(utf8)";
use open IN => ":encoding(utf8)", OUT => ":utf8";
发布于 2014-08-12 16:33:08
您还想说,代码中的字符串是utf-8。参见Why does modern Perl avoid UTF-8 by default?。因此,不仅要设置PERL_UNICODE=SDAL
,还要设置PERL5OPT=-Mutf8
。
https://stackoverflow.com/questions/627661
复制相似问题