這可能是一個明顯的問題。但是我之前沒有遇到過這種情況。 在我的Spring MVC應用程序中,我在web.xml中有以下配置。如何檢查我的請求 - 響應是否被編碼?
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
瀏覽器和服務器之間的數據傳輸通過使用Jackson Mapper的JSON發生。 請求 - 在Firebug響應頭低於:
Response headers
Content-Type application/json;charset=UTF-8
Server Apache
Transfer-Encoding chunked
Request Headers
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Cache-Control no-cache
Connection keep-alive
Content-Length 0
Content-Type application/json; charset=utf-8
這是否意味着請求 - 響應是正確編碼? 正在看標題唯一的方式來確定使用的編碼?
UPDATE
如果作爲Polve以下提到,該設置隻影響解釋爲UTF-8,那麼我應該怎麼做我的編碼Spring MVC中的反應呢?
確定可以請你告訴我如何確保它被正確編碼? – Raghav 2012-03-27 15:31:15
你不能:-)如果你用英語跟我說話,這是我的習慣用英語回答,但沒有什麼可以阻止我從挪威的回答。但是基本上你應該像前面描述的那樣設置content-type,以及Accept-Charset(並且實際上用該編碼對頁面進行編碼),並且大多數客戶端應該有禮貌地行事。這也是一個很好的閱讀主題:http://www.w3.org/International/questions/qa-forms-utf-8.en.php – polve 2012-03-28 11:06:08
該過濾器的最終目的是總是告訴客戶你使用utf-8,並始終將響應解釋爲utf-8。如果你使用utf-8作爲默認設置你的服務器,並且你的所有響應都使用utf-8編碼,那麼你很安全。例如。如果你從String.getBytes()提取字節數組,你會得到默認的chareset。使用String.getBytes(「UTF-8」)進行轉換。 – polve 2012-03-28 11:18:30