Tomcat不能正確編碼包含unicode字符的字符串文字。問題發生在Linux服務器上,但不在我的開發機器上(Windows)。它僅影響字符串文字(不是從數據庫或從文件中讀取的字符串!!!)。如何在tomcat上使用UTF-8
- 我已經在Connector標記(server.xml)上設置了
URIEncoding="utf-8"
。 - 我已經使用了setCharacterEncoding()。
- 我查看堆棧跟蹤(沒有可能設置編碼的過濾器)。
- 我已經設置LANG環境變量
- 我cheched HTTP標頭和它們是正確的(內容 - 類型= text/plain的;字符集= UTF-8)
- 我檢查了編碼在瀏覽器,它是正確(UTF-8)
以上都沒有工作。關於我可能錯過的任何想法?
public class Test extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/plain;");
Writer w = resp.getWriter();
w.write("Μαλακία Latin"); //Some unicode characters
w.close();
}
以上顯示在瀏覽器中。 ÎÎÎÎÎÎÎÎκάLatin
確保源java文件具有utf-8編碼集。我使用Notepad ++來檢查這一點。打開文件並檢查「編碼」菜單。如果編碼不是UTF,則剪切源文件的全部內容,更改編碼,粘貼剪貼板中的內容並保存源文件。 – 2012-03-22 12:55:56
如果您在十六進制編輯器中查看服務器響應,返回的實際字節序列是什麼?什麼是你的源文件的編碼? – Mikaveli 2012-03-22 12:56:19
*「問題發生在Linux服務器上,但不在我的開發機器上(Windows)。」*您如何部署到Linux?你是否一個接一個地傳輸文件?如果是這樣,怎麼樣?通過FTP?如果是這樣,你是在二進制模式下傳輸? – BalusC 2012-03-22 13:00:17