2016-04-03 43 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,鍵盤輸入將無法正常工作。等等 –