我有這樣的字符串:轉換字符串中的字符
Why RUNAS Windows \xee\x80\x80\x45xplorer\xee\x80\x81 Doesn\xe2\x80\x99t
Work After Installing IE7 St\xc3\xa5le
我得到通過讀取XML文件。這是一個UTF-8字符串。現在我想,這樣我可以打印它的等效Unicode字符:
Why RUNAS Windows Explorer Doesn’t Work After Installing IE7 Ståle
我嘗試了一個小程序:
use strict;
use utf8;
use Encode;
my $str = "Why RUNAS Windows \xee\x80\x80\x45xplorer\xee\x80\x81 Doesn\xe2\x80\x99t Work After Installing IE7 St\xc3\xa5le";
print $str;
和它的工作!
問題是,當我試圖從文件中讀取字符串,它不是轉換。所以下面不會產生unicode輸出:
use strict;
use utf8;
use Encode;
my $str = <DATA>;
$str = decode("utf8", $str);
open OUT, ">", "o.txt" or die;
binmode(OUT,":utf8");
print OUT $str;
__DATA__
Why RUNAS Windows \xee\x80\x80\x45xplorer\xee\x80\x81 Doesn\xe2\x80\x99t Work After Installing IE7 St\xc3\xa5le
你倒入靈魂你。無論誰決定你的XML格式需要將UTF字符編碼爲僞轉義的ASCII碼需要悔改。 –
HI @RobertP:任何想法如何得到這個工作? – gameover
請注意您收到的「寬字符」警告(如果您使用'使用警告;'如您所願)。你忘了編碼你的輸出。爲了修復這個bug,添加'use open':std',':encoding(UTF-8)';'(或者終端所期望的任何編碼)。 – ikegami