2016-05-29 56 views
1

我討厭提出一個問題,這個問題無疑已被回答了十幾次,但是我發現編碼問題令人困惑,並且很難將其他人的q/a與我自己的問題相匹配。用perl解碼unicode轉義字符

我從一個json文件在線提取信息,並且我的perl腳本沒有正確處理unicode轉義字符。

腳本是這樣的:

use LWP::Simple; 
use JSON; 
my $url = ______; 
my $json = get($url); 
my $data = decode_json($json); 
foreach my $i (0 .. $#{data->{People}}) { 
    print "$data->{People}[$i]{first_name} $data->{People}[$i]{last_name}\n"; 
} 

它遇到像這樣jsons:"first_name":"F\u00e9lix","last_name":"Cat"並打印它們像這樣:FΘlix Cat

我敢肯定,這裏有一個小小的更正,但我難倒。我真的很感激你能提供的任何幫助。

+0

應該正常工作,如果你加上'binmode STDOUT, 「:UTF8」;'(提供您的輸出終端需要UTF8編碼數據) –

回答

4

你沒有告訴Perl如何編碼輸出。您需要添加

use open ':std', ':encoding(XXX)'; 

其中XXX是終端所期望的編碼。

在Unix服務器時,你通常需要

use open ':std', ':encoding(UTF-8)'; 

在Windows上盒,你通常需要

use Win32 qw(); 
use open ':std', ':encoding(cp'.Win32::GetConsoleOutputCP().')'; 
+0

非常感謝!我找到了第一個建議,並沒有在我的Windows盒子上修復任何東西,而我卻死定了。我非常感謝幫助。 :) –

相關問題