Perso-Arabic字符未在命令行中正确显示

时间:2014-05-08 21:40:27

标签: perl command-prompt strawberry-perl perl5

我正在尝试运行一个使用波斯语/阿拉伯语字符的简单perl代码:

#!/usr/bin/perl
use strict;
use warnings;

print "سلام";

我在Windows 7上使用草莓perl。当我启动命令行并执行程序时,显示的消息是乱码。编码应为utf-8以正确呈现消息。

所以我想如果我使用chcp 65001命令,问题就会得到解决。不幸的是,这没有帮助,我仍然有同样的问题。

我尝试重写起始行以获得正确的编码:

#!/usr/bin/perl

use utf8;
use strict;
use warnings;
use warnings qw(FATAL utf8);
binmode STDOUT, ':encoding(UTF-8)';

print "سلام";

然后我在命令行上运行perl并首先执行了行chcp 65001然后运行程序。这就是我得到的:

enter image description here

1 个答案:

答案 0 :(得分:2)

这似乎与我的recent questionblog posts最终与Why is PERLIO_F_CRLF set on the bottom-most 'unix' layer on Windows?有关。

解决方法似乎是使用binmode(STDOUT, ":unix:encoding(utf8):crlf");来撤消输出到cmd.exe窗口(仅在这种情况下)最底层' unix&#的事实39; layer设置了CRLF标志(与perliol直接矛盾)。

您可以使用具有许多不错功能的ConEmu代替cmd.exe,并且可以轻松设置自定义字体(除了具有私人设置的各个标签等)。< / p>

不要让cmd.exe中发生的事情发生任何事情。