Heritrix解決中文亂碼
最近,突發奇想,想把工作中遇到的問題和大家分享出來。自己沒有牛到貢獻一個開源項目,但是,有多少就貢獻多少吧。
廢話不多說。第一次分享的是Heritrix的亂碼解決。
根據官方文檔或者是一些blog,可以很輕松的配出一個可以運行的heritrix,基于web的管理頁面也十分簡單。但是中文亂碼問題卻很少有提及,就算提及,也是一句話,和沒說一樣。
目前Google、Baidu上能搜到的,大多是Heritrix 1.X的內容,heritrix 3.x的比較少,而這兩個版本的結構貌似差的挺大,所以在Heritrix3上遇到的很多問題就得靠自己了。
heritrx 3 首先會去根據服務器返回的Content-type去獲得編碼。
例如上圖的光環中的內容。這個時候往往是沒有亂碼的,挺和諧。
但是,如果獲得不到就認為是ISO-8859-1(這個值是可配的)。例如下圖。可實際上它是gb2312的。
在此我真的想感嘆,老外的世界里只有ISO-8859-1嗎!
這個時候我們可以根據HTML的meta信息來判斷,例如
<metahttp-equiv="content-type"content="text/html;charset=utf-8">
我目前還沒見過從這個地方獲得不到編碼的(也有可能是我閱歷淺),所以從這個地方拿編碼還是比較靠譜的,拿的方法有很多種,我當時借鑒了Jsoup用了正則來獲得。至于這段代碼,也不在手邊,有機會再貼吧,目前僅提供一個思路吧。
也許解決亂碼問題還有更好的辦法,歡迎留言。
原文參考自web開發網:http://www.software8.co/wzjs/qtyy/3676.html