我使用LWP::Simple來獲取一個網頁,其中有幾個格式不正確的字符。我打電話給.get
。而不是,我想解碼插入replacement characters在困惑的部分,並繼續前進。我可以問Perl 6的LWP :: Simple來處理畸形的UTF-8嗎?
它看起來像迴應是一個Buf對象和使用該.decode。我仍然在調查,但缺乏文檔使這比應該更困難。
我使用LWP::Simple來獲取一個網頁,其中有幾個格式不正確的字符。我打電話給.get
。而不是,我想解碼插入replacement characters在困惑的部分,並繼續前進。我可以問Perl 6的LWP :: Simple來處理畸形的UTF-8嗎?
它看起來像迴應是一個Buf對象和使用該.decode。我仍然在調查,但缺乏文檔使這比應該更困難。
如果我沒有理解LWP::Simple
的example script和implementation正確的,我覺得你的意思來處理這樣的兩種情況下...
設置.force_encoding
使用不太嚴格的編碼:
use LWP::Simple;
my $lwp = LWP::Simple.new;
$lwp.force_encoding = 'utf8-c8';
say $lwp.get('http://www.google.com');
utf8
(缺省值)= UTF8,具有引起異常無效字節。utf8-c8
= UTF8帶有無效字節的傳遞。設置.force_no_encode
得到的結果作爲Buf
:
use LWP::Simple;
my $lwp = LWP::Simple.new;
$lwp.force_no_encode = True;
say $lwp.get('http://www.google.com');
我不能,雖然測試它,因爲LWP::Simple
(與ZEF安裝)不起作用在所有對我來說。 (不知道這個問題是否與我的Perl 6的設置有關。)
我的印象是,這個模塊現在不是很精美。這不僅僅是缺少文檔–這個API似乎也是從Perl 5模塊中複製出來的(甚至是在Perl 6中沒有意義的部分),並且部分由不同的提交者演變而來,這些提交者在這裏和那裏添加功能並沒有太多設計重點。
沒有解碼器API提供一個選項,選擇是否顯示錯誤消息或當它發現無效字節插入?
jnthn的回答是:
在它總是拋出一個錯誤的時刻
直到現在[這不是一個好時機,啓用該選項]
而現在[是更好的時機]
utf-c8編碼在這裏不起作用,因爲它的工作原理是保存解碼中的奇怪, d force_no_encode返回一個我仍然需要解碼的緩衝區。我不認爲這是LWP :: Simple的問題,因爲Perl 6的解碼能力有限。 –
所以解碼爲拉丁-1或使用解壓縮* A – ugexe
這將工作,如果它是拉丁文-1或ASCII,但它不是。 –