2014-02-26 48 views
0

我的Web應用程序(Java/Tomcat/Spring/Maven)在處理特殊字符(如(十六進制92,十進制146))時遇到問題。這是作爲另一個奇怪的角色進入我的應用程序。Spring/Tomcat不遵守UTF-8編碼?

我已經看過this question和核實II在我所有的JSP文件,下面一行:

<%@ page contentType="text/html; charset=UTF-8" %> 

我也看了this question和驗證,我有以下行我的Maven的pom.xml:

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 

因此,據我所知,一切都應該以UTF-8編譯和處理。但是,當我提交字符串Martin’s Auto Repair在彈簧綁定過程中顯示在服務器上的是Martinâ\u0080\u0099s Auto Repair。這是由Tomcat交給我的應用程序的字符串。

更糟糕的是,這會回傳給瀏覽器,因此再次提交已更改的字符串會一次又一次地展開奇怪的字符。

有什麼建議嗎?在這一點上,我不確定這是瀏覽器問題還是服務器問題。

+0

您是否也將_requests_作爲UTF-8處理?你叫什麼來提交?作爲查詢參數? – fge

回答

2

十六進制92是不以Unicode(http://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF)字符

視窗代碼頁1252是不是100%相同爲Unicode。

+0

此外,它看起來像_somewhere_將UTF-8編碼的字節流解析爲ISO-Latin-1,或者您不會在輸出中看到有趣的序列。 –

+0

謝謝你的迴應。假設你的分析是正確的,那麼這個問題的解決方案是什麼?這是一個Tomcat配置問題嗎?瀏覽器問題? – user3120173

+0

這是一個*一般*問題與我的設置,或者我碰巧選擇了一個不起作用的特定示例(十六進制92)? – user3120173