2016-04-03 44 views
0
my $star = 'इस परीक्षण के लिए है'; 

我想打印这个字符串,因为它使用的是编码。如何将非英文字符打印到终端?

+0

上终端你在用吗?如果终端处理UTF8,您应该能够将该变量打印到STDOUT。请参阅[如何从Perl输出UTF-8?](http://stackoverflow.com/questions/627661/how-can-i-output-utf-8-from-perl) –

+0

我正在使用Linux终端和Windows terminal –

回答

4

您需要的声明

use utf8; 

在程序的顶部,以告诉脚本在UTF-8编码的Perl。你也可以写

use open qw/ :std :encoding(UTF-8) /; 

使UTF-8的默认输出编码

你的终端一定是在UTF-8输出。在Linux上,你应该检查LC_TYPE环境变量

echo $LC_CTYPE 

这通常应该是UTF-8,但你可以改变它,如果不

在Windows上,与代码页完成。 For UTF-8 you need code page 65001。使用chcp命令检查并修改它

现在,只要你的终端使用覆盖要显示字符的字体,你应该能够只是print $star有文字显示在终端

+1

+1需要注意的是,如果在Windows上使用'cmd.exe',你会遇到[问题](https://www.nu42.com/2014/05/utf-8-ouput-从-perl的,和C-程序-in.html)。将'STDOUT'设置为使用[':unix'图层](https://www.nu42.com/2014/05/utf-8-output-from-perl-in-cmdexe-layers.html)似乎有帮助。使用诸如[ConEmu](https://conemu.github.io/)的控制台容器将掩盖问题,文件输出将正常工作。此外,通过将'cmd.exe'控制台设置为代码页65001,键盘输入将无法正常工作。等等 –