工作積累(七)——Tomcat URIEncoding引起的中文亂碼問題

J2EE 中用到了中文搜索,在後臺接到的前臺數據中出現了亂碼,採用如下方式進行轉碼:

try {
  keyword = new String(cond.getKeyword().getBytes("iso-8859-1"),"utf-8");
} catch(UnsupportedEncodingException ex) {
  ex.printStackTrace();
}

這樣在本地部署測試時解決了中文亂碼導致的查詢失敗問題,然而當將項目部署到測試服務器上時卻依然不起作用。由於除了中文,英文和數字可以搜索成功,因此可以推測依然是字符集問題。考慮到在前臺發送Ajax 請求開始查詢時仍未到達數據庫,基本可以排除數據庫字符集方面的配置問題,由於水平所限一直未能想到其他原因。後來發現在 Tomcat 中也有字符集的設置問題,經過比對,發現果然是因爲本地與測試服務器Tomcat 配置不同而導致。

默認情況下,Tomcat 所採用的字符集爲 iso-8859-1

<!-- 省略字符集聲明,默認爲 iso-8859-1-->
<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="18443" />

而服務器上的Tomcat 配置如下:

<!-- 聲明字符集 -->
<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="18443"
    URIEncoding="UTF-8" />

修改過URIEncoding 後,問題解決。以後如果出現中文亂碼問題,而數據庫設置正常,應該想到確認 Tomcat 所使用的字符集。

完。

 

參考資料:

http://blog.csdn.net/hongqishi/article/details/7428380

本文出自 “細桶假狗屎” 博客,請務必保留此出處http://xitongjiagoushi.blog.51cto.com/9975742/1662527

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章