Text-Processing
修復字元編碼混亂
我正在建構一個腳本以從字元編碼損壞的網站中提取一些數據:
- html 標頭聲稱它是 iso-8859-1,但它不是
wget
文件顯示它實際上是 utf-8,但字元錯誤- 逆向工程向我展示了有人設法將 windows 程式碼頁 1252 用作 unicode 程式碼!
例如,反引號在程式碼頁 1252 中是 0x91,在此頁面中是 U+0091。詭異的。令人驚訝的是,網路瀏覽器似乎能夠自動修復這個問題。
我的問題:哪個工具可以幫助我清理這個爛攤子?(不是手工!這是一個有數百頁的動態網站,我看到至少六種不同的錯誤編碼。)
根據您對“非手工”的含義,
iconv
可能對您的任務有用。iconv - 將文本從一種字元編碼轉換為另一種
選項
-f from-encoding, --from-code=from-encoding Use from-encoding for input characters. -t to-encoding, --to-code=to-encoding Use to-encoding for output characters.
根據我的經驗,即使您必須處理錯誤的編碼,iconv 也可以工作。例如,您可以告訴 iconv 輸入數據是 utf-8 編碼的,即使它是 iso-8859,這樣 iconv 就好像輸入是 utf-8 一樣。這樣您就可以修復錯誤編碼的數據。
由於 iconv 可以用作過濾器,因此您可以將其與
curl
. 當wget
您使用--output-document -
.據我所知,iconv 無法檢測/猜測正確的輸入編碼。但是根據您的輸入數據的混亂程度,如果網站(太多)有許多不同類型的錯誤/混合編碼,這可能無論如何都是“不可能的”。如果整個網站都以同樣的方式搞砸了,你應該能夠修復它。