我正在尝试使用“utf8”编译指示编写Perl脚本,并且我得到了意想不到的结果 . 我正在使用Mac OS X 10.5(Leopard),我正在使用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' .
6 回答
您还想说,代码中的字符串是utf-8 . 见Why does modern Perl avoid UTF-8 by default? . 所以不仅设置
PERL_UNICODE=SDAL
而且设置PERL5OPT=-Mutf8
.谢谢,终于得到了一个解决方案,不要把utf8 :: encode全部放在代码上 . 要合成并完成其他情况,比如在utf8中写入和读取文件,也可以在utf8中使用YAML文件的LoadFile
其中cache.yaml是:
在你的shell中做:$ env | grep LANG
这可能会显示您的shell没有使用utf-8语言环境 .
use utf8;
不启用Unicode输出 - 它允许您在程序中键入Unicode . 在print()
语句之前将其添加到程序中:看看是否有帮助 . 那应该使用UTF-8而不是普通的ASCII输出
STDOUT
.您可以使用open pragma .
例如 . 下面设置STDOUT,STDIN和STDERR使用UTF-8 ....
TMTOWTDI,选择最适合您工作方式的方法 . 我使用环境方法,所以我不必考虑它 .
在environment:
在command line:
或者binmode:
或者PerlIO:
或open pragma: