看板 java 關於我們 聯絡資訊
※ 引述《Holocaust123 (Terry)》之銘言: : ※ 引述《ogamenewbie (._.)》之銘言: : : 基本上,因為你很多地方沒有講得很清楚, : : 所以我中間隨口問問,你就隨便參考看看。 : 真是抱歉QQ,我再講清楚一點,順便把我的code上傳到免空了 : http://www.badongo.com/file/15256049 : 不貼code是怕複製貼上後編碼有問題,所以我把整個java檔壓縮上傳。 : 這個 main.java 檔案的編碼是 UTF-8。 問題出在這裡。 main.java line 57: br = new BufferedReader(new InputStreamReader((InputStream)obj)); 這樣子是以系統預設的編碼(encoding)來建立 InputStreamReader,應該要使用 網頁 response 的 Content-Type header value 指定的 charset。 比如 Yahoo 知識這一頁: http://tw.knowledge.yahoo.com/question/question?qid=1509051800784 Content-Type 是 "text/html; charset=utf-8",你就要使用 UTF-8 來 decode 網頁的輸出(byte sequence)。 你現在的程式如果在一個預設 encoding 不是 UTF-8 的 JRE 環境執行,在使用 BufferedReader 讀取網頁輸出時會失真,使用 regular expression 當然也就無法 正確找出你要的資訊。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.143.200
infor:厲害 06/03 11:33
slalala:html parser套件都能夠針對page取得charset等資訊 06/03 15:29
slalala:因此程式不用寫死 讓套件內建的方法判定charset即可 06/03 15:32
Holocaust123:元PO真神人也....m(_ _)m 06/03 19:00
Holocaust123:這樣cmd就沒辦法了,因為cmd預設是Big-5且無法更改.. 06/03 19:04
kene:哪有, 我上篇的推文就可以動啊 06/03 20:01
sbrhsieh:kene 講的方式在只面對單一編碼的數據時,確實是對的 06/03 20:48
sbrhsieh:那方法等於是變更預設編碼。 06/03 20:49
kene:的確, 遇到多重編碼的環境就會爆炸 XD 06/03 21:15
Holocaust123:k大的方法成功了,可以請問甚麼是多重編碼環境嗎@@? 06/03 22:18