2012-12-07 47 views
0

我有一個WINDOWS-1252字符的文本文件,例如ø和ß。該文件通過表單提交到servlet進行上傳,在那裏使用opencsv進行解析,並將其作爲List對象返回到顯示它的jsp頁面。 utf-8字符顯示爲?我試圖找出編碼可能出錯的地方。 我已經嘗試了一堆東西:顯示WINDOWS-1252編碼文本爲html

  • 我的網頁有標籤<%@page contentType="text/html" pageEncoding="WINDOWS-1252"%>

  • 文件輸入編碼 - new FileInputStream(file), "WINDOWS-1252")

  • 每個字符串編碼 - s = new String(s.getBytes("WINDOWS-1252"));

編碼失敗的地方?有任何想法嗎?

回答

0

確定問題固定。 所以第一個問題是,它不是一個utf-8文件,而是一個WINDOWS-1252文件。我確定使用juniversalchardet庫(非常有用和易於使用)。 然後我必須確保我是通過一個FileInputStream閱讀與正確的字符集文件:

new FileInputStream(file), "WINDOWS-1252") 

的我不得不確保我與在JSP文件正確的字符集顯示它使用標籤<%@page contentType="text/html" pageEncoding="WINDOWS-1252"%>

這幾乎是它 -

(1)確定的字符集

(2)確保你正在閱讀的文件正確

(3)確保你的顯示正確

1

一些故障診斷建議:

調試打印或以其他方式檢查文本在不同階段的十六進制,並驗證編碼真的是你希望它是什麼。

確保沒有BOM(字節順序標記),看看這個問題,並在鏈接,如果有,你沒有一個簡單的方法來擺脫它:Reading UTF-8 - BOM marker

+0

確定我的壞tt在utf-8中沒有解碼,但在WINDOWS-1252中解碼。用juniversalchardet來確定編碼。 – levtatarov