我有一個接受HTML內容作爲請求參數的一部分的servlet。 HTML是本地化的,可能是法文,西班牙文等等。 我也使用Apache HTTP客戶端做出這個servlet用於測試目的,其具有如下報頭定義的請求:通過apache HTTPClient傳遞特殊字符
HttpClient client = new HttpClient();
PostMethod method = new PostMethod("<URL>");
String html = FileUtils.readFileToString(inputHTMLFile, "UTF-8");
method.addParameter("html", html);
method.addRequestHeader("Accept", "*/*");
method.setRequestHeader("accept-charset", "UTF-8");
無論HTML被讀取具有的字符編碼UTF-8,示例文本:
Télécharger un fichier
然而,當我從文本中要求PARAM獲取HTML變得T?l?charger un fichier
我通過幾個環節如http://www.oracle.com/technetwork/articles/javase/httpcharset-142283.html其中談到字符集和瀏覽器如何通常會去編碼特殊字符。如果我要使用UTF-8 URLEncode html,然後使用servlet中的相同字符集對其進行解碼,那麼我會按照預期獲取HTML。
這是我能做的唯一的事情來保存這些字符集嗎?我錯過了什麼嗎?
謝謝。現在
是否已確認'html'是正確的對你從文件解碼之後呢?當你使用System.out.println(html)時,你可能會看到''''這意味着html文件不是UTF-8。字符x的存在並不意味着文件在編碼y中。該文件可以是任何支持字符x的編碼。 – Esailija 2013-04-06 11:32:08
我現在正在爲法語和西班牙語正確無誤。我已經在notepad ++中將編碼更改爲utf-8。在獲取html後的servlet中,我使用FileUtils.writeStringToFile(new File(「c:\\ test.html」),message,「UTF-8」)將文件寫回到文件中。我可以很好地看到字符。但是對於中文,即使我從文件中讀取後在控制檯中正確地看到字符,在寫入期間它會轉換爲 – user320550 2013-04-06 14:18:44