2011-03-04 86 views
2

我得到我需要閱讀和解析的html文件,這個文件可以是簡單的英文,japenese或者任何具有該語言所需的相關字符編碼的語言。當文件是Japenese與任何這些編碼字符編碼

  • 移位JIS
  • EUC-JP
  • ISO-2022-JP

的,會出現問題我試圖讀取文件用的FileReader但生成的文件都是垃圾人物。我也嘗試使用FileInputStream和硬編碼japenese編碼來檢查日文文件是否正確讀取,但結果不符合預期。

FileInputStream fis = new FileInputStream(htmlFile); 
InputStreamReader isr = new InputStreamReader(fis, " ISO-2022-JP"); 

我沒有與字符編碼和國際化的很多經驗,我如何能與不同的編碼讀/寫文件有什麼建議?

還有一件事,我不知道如何獲得我正在閱讀的html文件的字符編碼,我明白我需要用相同的編碼編寫文件,但不知道如何獲得原始文件的編碼 謝謝,

+1

當然!接受你過去的問題的一些答案。 – awm 2011-03-04 14:39:06

+1

你能展示一些輸入和結果的例子嗎? – axtavt 2011-03-04 14:50:32

+0

這個HTML文件究竟來自哪裏?從一個網站?你想用這個HTML文件做什麼?提取一些數據? – BalusC 2011-03-04 14:56:58

回答

4
  • 忘記FileReader存在,它隱式使用平臺默認編碼,這使得它幾乎沒用。
  • 您的帶有硬編碼編碼的代碼是正確的,除了編碼本身,它具有領先的空間。如果你刪除它,代碼應該正確讀取ISO-2022-JP編碼文件
  • 至於獲取HTML文件的字符編碼,有一些可以在HTTP水平傳輸
    • 方式一個Content-TypeHTTP header - 但是當你從網絡服務器,而不是當它保存爲一個文件
    • 作爲讀取該文件,這是唯一可用的相應META HTML tag<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
    • 或者,如果文檔類型是XHTML,in the XML declaration<?xml version="1.0" encoding="UTF-8"?>