首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Perl输出UTF-8?

如何从Perl输出UTF-8?
EN

Stack Overflow用户
提问于 2009-03-09 19:30:50
回答 5查看 129.4K关注 0票数 121

我正在尝试使用utf8杂注编写一个Perl脚本,并且得到了意想不到的结果。我用的是MacOSX10.5(豹),我用的是TextMate。我的编辑器和操作系统的所有设置都默认写入utf-8格式的文件。

但是,当我在文本文件中输入以下内容,将其另存为".pl“并执行它时,我得到友好的”带问号的菱形“,而不是非ASCII码字符。

代码语言:javascript
复制
#!/usr/bin/env perl -w

use strict;
use utf8;

my $str = 'Çirçös';
print( "$str\n" );

知道我做错了什么吗?我希望在输出中得到‘�irçös’,但我得到的却是'�ir��s‘。

EN

回答 5

Stack Overflow用户

发布于 2009-03-09 20:47:57

您可以使用open pragma

例如。下面将STDOUT、STDIN和STDERR设置为使用UTF-8....

代码语言:javascript
复制
use open qw/:std :utf8/;
票数 87
EN

Stack Overflow用户

发布于 2009-04-21 13:02:51

TMTOWTDI,选择最适合您工作方式的方法。我使用环境方法,所以我不需要考虑它。

environment

代码语言:javascript
复制
export PERL_UNICODE=SDL

command line

代码语言:javascript
复制
perl -CSDL -le 'print "\x{1815}"';

或使用binmode

代码语言:javascript
复制
binmode(STDOUT, ":utf8");          #treat as if it is UTF-8
binmode(STDIN, ":encoding(utf8)"); #actually check if it is UTF-8

或使用PerlIO

代码语言:javascript
复制
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

代码语言:javascript
复制
use open ":encoding(utf8)";
use open IN => ":encoding(utf8)", OUT => ":utf8";
票数 72
EN

Stack Overflow用户

发布于 2014-08-12 16:33:08

您还想说,代码中的字符串是utf-8。参见Why does modern Perl avoid UTF-8 by default?。因此,不仅要设置PERL_UNICODE=SDAL,还要设置PERL5OPT=-Mutf8

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/627661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档