中文乱码是web开发中一个棘手而必须解决的问题。现列举乱码出现的一些情况和解决方法:
String sms = new String(request.getParameter("smsTemplateText").getBytes("ISO8859_1"),"utf-8");
1,jsp文件问题:
这个首先是要在工程中统一的。这里统一成utf-8。
2,工程编码设定:
右键工程,选properties,出来第一个窗口查看“text file encoding”,看是不是utf-8。
3,struts.xml:
试试这个吧:
这个标签定义了struts2的国际化设置的一个拦截器,它做的事很多,包括设置用户的默认区域设置。
倘若以上问题还不能解决,继续尝试:
4,tomcat目录下server.xml:
找到当前所使用的那一个port,增加URIEncoding的设置:
URIEncoding="utf-8"
connectionTimeout="20000"
redirectPort="8443" />
tomcat的环境问题,无需多说。
5,还是乱码?如果jsp页面涉及了传参(表单提交或是Ajax Post/Get),并且后台莫名其妙仍旧出现乱码,不妨手动编码和解码。
以Ajax向后台提交为例:
var url = "featureWordDetail" + "?timestamp=" + new Date().getTime();
var params = "prodId="+ "" + "&featureWord=" + encodeURI($(this).text(),"utf-8");
$.getJSON(url,params,function callback(data){
....
}
这里利用js的encodeURI("....","utf-8")把指定文字按照utf-8转码,以转码后的字符串(数字和%%混合)作为参数提交。这种办法的好处
比较多,也比较保险。
ps一点: url后加时间戳,以防止缓存导致的Ajax失效。视应用场景而定。
同时,在Java后台,需要对接收字串按先前的utf-8来解码恢复:
String featureWord = java.net.URLDecoder.decode(featureWord,"utf-8");
以上是jsp乱码前后台乱码问题的一个检查处理的办法和思路,供参考。