Java中文乱码破碎重组_总结彻底解决Spring MVC+Mybatis中文乱码问题
Java對于新手最容易出現(xiàn)的問題就是中文亂碼的問題。今天我就來總結(jié)一下徹底解決Spring mvc+Mybatis中文亂碼的方案。
首先要看打一斷點(diǎn)看一下Controller接收到參數(shù)值是否正常。如果不正常多半是因?yàn)镾pring或者頁面編碼的設(shè)置問題。
一、Spring或頁面編碼問題
在JSP頁面第一行加上下面代碼:
因?yàn)镾pringmvc采用默認(rèn)的編碼(ISO-8859-1)進(jìn)行解析參數(shù), 這時(shí)就會出現(xiàn)亂碼問題。
在Web.xml加上Spring編碼轉(zhuǎn)換過濾器filter。
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
forceEncoding
true
encodingFilter
/*
二、Web容器的問題
如果上面方案一還沒有解決亂碼的問題,看一下你的Web容器的問題的編碼設(shè)置,比如我使用的是Tomcat,找到server.xml。
可以看到Connector沒有設(shè)置編碼。加上編碼屬性URIEncoding,如下:
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
端口我使用是8081。上面主要是解決GET請求中文亂碼的問題。
三、數(shù)據(jù)庫或者鏈接數(shù)據(jù)庫問題
如果通過打斷點(diǎn)看到Spring Controller接收到值中方是正常的,但是插入數(shù)據(jù)庫之后就是亂碼了。一般這種情況無非就是兩種問題。
1、數(shù)據(jù)庫編碼、表編碼、列編碼依次檢查是否是UTF-8編碼
2、mysql的鏈接字符串加上編碼參數(shù),如下:
四、Response或者Servlet亂碼問題
第一種方法:
//getWriter()方法將 輸出編碼設(shè)置成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兩方法中設(shè)定characterEncoding的方法對服務(wù)器效果一致,不需要反復(fù)調(diào)用。
在輸出文本內(nèi)容時(shí),采用response.setContentType("text/html; charset=utf-8");似乎更為方便。
第二種方法:
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(), "UTF-8"));
總結(jié)
以上是生活随笔為你收集整理的Java中文乱码破碎重组_总结彻底解决Spring MVC+Mybatis中文乱码问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA语言写的,用java语言写
- 下一篇: 2048java课程设计报告_软件工程—