Java中文乱码破碎重组_总结彻底解决Spring MVC+Mybatis中文乱码问题
Java對于新手最容易出現的問題就是中文亂碼的問題。今天我就來總結一下徹底解決Spring mvc+Mybatis中文亂碼的方案。
首先要看打一斷點看一下Controller接收到參數值是否正常。如果不正常多半是因為Spring或者頁面編碼的設置問題。
一、Spring或頁面編碼問題
在JSP頁面第一行加上下面代碼:
因為Springmvc采用默認的編碼(ISO-8859-1)進行解析參數, 這時就會出現亂碼問題。
在Web.xml加上Spring編碼轉換過濾器filter。
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
forceEncoding
true
encodingFilter
/*
二、Web容器的問題
如果上面方案一還沒有解決亂碼的問題,看一下你的Web容器的問題的編碼設置,比如我使用的是Tomcat,找到server.xml。
可以看到Connector沒有設置編碼。加上編碼屬性URIEncoding,如下:
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
端口我使用是8081。上面主要是解決GET請求中文亂碼的問題。
三、數據庫或者鏈接數據庫問題
如果通過打斷點看到Spring Controller接收到值中方是正常的,但是插入數據庫之后就是亂碼了。一般這種情況無非就是兩種問題。
1、數據庫編碼、表編碼、列編碼依次檢查是否是UTF-8編碼
2、mysql的鏈接字符串加上編碼參數,如下:
四、Response或者Servlet亂碼問題
第一種方法:
//getWriter()方法將 輸出編碼設置成iso-8859-1,這樣輸出utf8編碼字符串必然亂碼
PrintWriter pw = response.getWriter();
//1、
//response.setCharacterEncoding("UTF-8");
//2、
response.setContentType("text/html; charset=utf-8");
pw.write(resStr);
pw.flush();
pw.close();
setContentType 和 setCharacterEncoding兩方法中設定characterEncoding的方法對服務器效果一致,不需要反復調用。
在輸出文本內容時,采用response.setContentType("text/html; charset=utf-8");似乎更為方便。
第二種方法:
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(), "UTF-8"));
總結
以上是生活随笔為你收集整理的Java中文乱码破碎重组_总结彻底解决Spring MVC+Mybatis中文乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA语言写的,用java语言写
- 下一篇: php 如何单独刷新模板,反馈一个x-a