首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >utf8 8:所有

utf8 8:所有
EN

Stack Overflow用户
提问于 2011-07-02 15:39:46
回答 3查看 1.1K关注 0票数 2

这是我的测试代码:我使用的是win32草莓perl。

使用utf8 8::all;my $input =;

当输入汉字时,

它显示了错误:

代码语言:javascript
运行
复制
utf8 "\xAD" does not map to unicode .....

我还用utf8 8::写了一个脚本来打印汉字,不能成功。如果只使用utf8或不使用utf8,我可以通过编码来打印汉字。

如何将其设置为其他编码?

EN

回答 3

Stack Overflow用户

发布于 2011-07-02 21:21:43

如何将其设置为其他编码?

使用utf8::all,您不能。编码UTF-8在任何地方都是硬编码的。毕竟,该模块名为utf8::all,而不是big5::all

您必须对进行解码/编码,并解释为,参见http://p3rl.org/UNI。你说你在Windows上,所以使用编码cp950

代码语言:javascript
运行
复制
use Encode qw(decode encode);

my @arguments_as_characters = decode 'cp950', @ARGV;
open my $file_handle, '<:encoding(cp950)', $file_name;
print encode 'cp950', $data_to_stdout;

如何在cp950中打开STDIN,STDOUT?

当您运行程序时,标准流已经打开了!您可以使用I/O层修改binmode

代码语言:javascript
运行
复制
binmode STDOUT, ':encoding(cp950)';
票数 6
EN

Stack Overflow用户

发布于 2011-07-02 16:03:03

有一种方法可以将Windows命令提示符的代码页设置为UTF-8,但这不是一个可部署的解决方案。

我的建议是不用麻烦,只需在Perl中一直使用Big5 (并坚持使用in 950/),或者使用文本文件I/O进行输入/输出。

或者,为了冒险,可以在cgywin中使用bash/perl,而不是使用UTF-8。

票数 1
EN

Stack Overflow用户

发布于 2017-11-25 06:31:21

代码语言:javascript
运行
复制
use open IO => ':encoding(big5)';

代码语言:javascript
运行
复制
use open IO => ':encoding(cp950)';

代码语言:javascript
运行
复制
use open IO => ':locale';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6557934

复制
相关文章

相似问题

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