其實 Java 的 URLConnection class 本身就有提供 getContentEncoding() method 取得網站編碼,但實際操作後,發現 getContentEncoding() 一直回傳 null ,也就是 URLConnection 判斷該網站是未知編碼,這個問題在各大論壇都有其他人發問,但目前仍然沒有解決,故只好自己另外寫程式碼來處理編碼問題。
在 Html 的 Head 內,Meta 標籤內含有通知瀏覽器該選擇何種編碼來檢視網站,範例如下:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">在 http-equiv="Content-Type" 時,後方的 content 設定值就會通知瀏覽器該選擇哪種編碼,故只要取得 charset 後方數值,即可得到編碼。
目前的作法是先使用 UTF-8 的編碼解析網站,取得 Meta 標籤內 http-equiv="Content-Type" 時,content 後方的 charset 設定值,再使用取得的編碼重新解析網站,這樣解析出來的網站就不會發生亂碼問題。
此外,我是設定當資料庫內沒有該網站的 Xpath 時,就請使用者複製文章標題來換取 Xpath 。請注意,如果該網站具有簡體中文,則複製文章標題時,不得使用 FireFox 的簡轉繁的套件,避免抓取文字的編碼與 DOM 內的文字編碼不同,造成程式判斷該文章標題不存在。
參考資料:
沒有留言:
張貼留言