中文乱码解决方案总结
以前做过一阵网站开发,前台静态html,动态jsp,后台java源文件,都会出现各种各样的中文乱码问题,问题解决了就记录下来,总计给自己看,能帮到同行也是我的荣幸。
先写一下,有了更好的办法再总结,
1、pageEncoding:设置JSP源文件和响应正文中的字符集编码。
2、采用转换,str=new String(str.getBytes("iso-8859-1"),"utf-8");
3、增加fiter, request.setCharacterEncoding("utf-8");
4、在request.getParameter("name"),之前设置request.setCharacterEncoding("utf-8");
5、在server.xml 增加uRIEncoding="UTF-8" useBodyEncodingForURI="true",其中useBodyEncodingForURI 优先级比uRIEncoding 高。
6、可以在把对象传递到页面前先处理一下链接和中文 music.setUrl(URLEncoder.encode(music.getUrl(),"utf-8")),然后在页面获取。
7、在页面里自定义fn处理: ${myfn:urlencode(music.url)}${myfn:urlencode(music.author)}
总结:
1)request.setCharacterEncoding;只对post请求、get请求(server.xml中配置useBodyEncodingForURI="true")起作用。
2)server.xml 增加uRIEncoding="UTF-8" useBodyEncodingForURI="true" 只对get请求起作用。
3)地址栏手动链接。根据系统编码gbk----iso-8859-1
4)request.setCharacterEncoding 应该设置在request.getParameter之前。
5)对server.xml只有uRIEncoding="UTF-8"配置的情况下。 会对get请求uri进行utf-8编码
6)若useBodyEncodingForURI="true" 优先级比uRIEncoding="UTF-8"高。即设置前者后,后者不起作用。
因此建议最好 jsp 中pageEncoding,contentType,server.xml uRIEncoding="UTF-8" useBodyEncodingForURI="true" fileter为request.setCharacterEncoding,保持一致。
以前做过一阵网站开发,前台静态html,动态jsp,后台java源文件,都会出现各种各样的中文乱码问题,问题解决了就记录下来,总计给自己看,能帮到同行也是我的荣幸。
先写一下,有了更好的办法再总结,
1、pageEncoding:设置JSP源文件和响应正文中的字符集编码。
2、采用转换,str=new String(str.getBytes("iso-8859-1"),"utf-8");
3、增加fiter, request.setCharacterEncoding("utf-8");
4、在request.getParameter("name"),之前设置request.setCharacterEncoding("utf-8");
5、在server.xml 增加uRIEncoding="UTF-8" useBodyEncodingForURI="true",其中useBodyEncodingForURI 优先级比uRIEncoding 高。
6、可以在把对象传递到页面前先处理一下链接和中文 music.setUrl(URLEncoder.encode(music.getUrl(),"utf-8")),然后在页面获取。
7、在页面里自定义fn处理: ${myfn:urlencode(music.url)}${myfn:urlencode(music.author)}
总结:
1)request.setCharacterEncoding;只对post请求、get请求(server.xml中配置useBodyEncodingForURI="true")起作用。
2)server.xml 增加uRIEncoding="UTF-8" useBodyEncodingForURI="true" 只对get请求起作用。
3)地址栏手动链接。根据系统编码gbk----iso-8859-1
4)request.setCharacterEncoding 应该设置在request.getParameter之前。
5)对server.xml只有uRIEncoding="UTF-8"配置的情况下。 会对get请求uri进行utf-8编码
6)若useBodyEncodingForURI="true" 优先级比uRIEncoding="UTF-8"高。即设置前者后,后者不起作用。
因此建议最好 jsp 中pageEncoding,contentType,server.xml uRIEncoding="UTF-8" useBodyEncodingForURI="true" fileter为request.setCharacterEncoding,保持一致。