2011-05-03 39 views

回答

8
-bash$ perl -we 'use utf8; binmode STDOUT, ":utf8"; print lc "É UM MAÇO"' 
é um maço 

utf8表明你的程序的文本是unicode。 binmode確保寬字符的正確輸出。

您也可以use Encode;,看到docs

+1

的'-CSA'標誌將告訴Perl都STD {IN,OUT ERR}和'@ ARGV'參數(但不是他們的文件內容,除非你加上'D'到'-CSAD')是UTF- 8,但你仍然需要在內部使用utf8。 – tchrist 2011-05-03 12:50:12

+0

@tchrist:謝謝,我不知道這個選項。 – Dallaylaen 2011-05-03 12:56:37

1

嘗試增加

use locale; 

到腳本。它應該使包括lc在內的各種功能具有重音。全面的測試腳本:

use strict; use warnings; 
use locale; 
use utf8; 

print lc('É UM MAÇO'); # gives "é um maço" 
+1

這其實不是一個很好的主意。 – tchrist 2011-05-03 12:48:23

+1

@tchrist - 你能否詳細說明一下?我知道區域設置支持各不相同,但它對Windows機器上的捷克文本操作非常有效。 – bvr 2011-05-03 14:05:39

+0

區域設置是一種非常老派和受限制的** Unicode前處理文本的方式。它們非常不可移植,非常麻煩,除了傳統的8位數據之外,它們根本不能工作 - 然後只是有時候。正確的做法是設置編碼層,以便將遺留的東西轉換爲Unicode,然後依賴(可裁剪的)Unicode規則進行大小寫映射和整理。這是無限更便攜的。 – tchrist 2011-05-03 18:41:17

相關問題