中文乱码错误(网页中、与服务器传输信息中出现的中文问题解决方案)
2012-03-24 16:56
615 查看
中文乱码问题常常出现,本文借鉴前辈的经验,再作如下归纳汇总。
这个页面有三个部分涉及到了编码的设定:
第一处的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。
第二处编码为解码格式。这个页面中存为UTF-8的文件被解码为iso8859-1,页面中的中文肯定出乱码。此行如果没有,默认也使用iso8859-1的编码格式,也会出现乱码。所以第一处与第二处必须一致才可以。
第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式可以省略。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式,出现了乱码。
改正的页面:
UTF-8 改为 gb2312 也没有乱码
Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;
Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
Get限制Form表单的数据集的值必须为ASCII字符;
而Post支持整个ISO10646字符集。
原因:
tomcat的内部编码格式iso8859-1。提交数据时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp却以utf-8的方式接受,导致乱码。
解决方案:
1、GET请求参数处理
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;对每个中文字符串进行转码。
B、POST请求参数处理
在处理请求页面上开始处,执行请求的编码代码,request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。使用String str = request.getParameter("something");即可得到汉字参数。
应用举例:
(一)
(二)
在处理请求的Servlet中的doPost方法中加上request.setCharacterEncoding("UTF-8"),达到的效果是相同的。
(三)上面示例中UTF-8 改为 gb2312 也可以。
第一类问题出现在JSP中:
错误页面:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=iso8859-1"%> <html> <head> <title>乱码啊</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> </head> <body> 乱码啊!!咋回事?? </body> </html>
这个页面有三个部分涉及到了编码的设定:
第一处的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。
第二处编码为解码格式。这个页面中存为UTF-8的文件被解码为iso8859-1,页面中的中文肯定出乱码。此行如果没有,默认也使用iso8859-1的编码格式,也会出现乱码。所以第一处与第二处必须一致才可以。
第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式可以省略。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式,出现了乱码。
改正的页面:
UTF-8 改为 gb2312 也没有乱码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=UTF-8"%> <html> <head> <title>木有乱码</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> </head> <body> 木有乱码。耶! </body> </html>
第二类问题出现在数据传输中(GET和POST传参时出现乱码)
Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。
Get限制Form表单的数据集的值必须为ASCII字符;
而Post支持整个ISO10646字符集。
原因:
tomcat的内部编码格式iso8859-1。提交数据时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp却以utf-8的方式接受,导致乱码。
解决方案:
1、GET请求参数处理
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;对每个中文字符串进行转码。
B、POST请求参数处理
在处理请求页面上开始处,执行请求的编码代码,request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。使用String str = request.getParameter("something");即可得到汉字参数。
应用举例:
(一)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <html> <head> <title>木有乱码</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> </head> <body> 木有乱码。耶! </body> </html>
(二)
在处理请求的Servlet中的doPost方法中加上request.setCharacterEncoding("UTF-8"),达到的效果是相同的。
(三)上面示例中UTF-8 改为 gb2312 也可以。
相关文章推荐
- 解决,文件上传到 ftp 服务器,中文出现乱码问题
- 彻底解决网络传输过程中出现的中文乱码问题
- 解决Windows2003 x64 英文版Web服务器中文网页乱码问题
- python使用requests爬取网页,遇到中文出现乱码的编码问题及解决
- debian服务器解决中文安装后出现乱码的问题
- Android编程向服务器发送请求时出现中文乱码问题的解决方法
- 在控制器中添加过滤器,解决中文由jsp到action进而到数据库传输过程中出现的乱码问题(Struts)
- Tomcat服务器记录日志(Logger)出现中文乱码问题解决
- 解决MyEclipse启动服务器控制台信息中文乱码问题
- 解决页面之间传输中文值时出现乱码的问题
- Java 简单解决springmvc获取properties文件里面中文内容出现论码问题(我遇到的问题是数据提交检验时返回的错误提示出现乱码)
- Tomcat服务器记录日志(Logger)出现中文乱码问题解决
- 解决:此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示
- 关于使用httpclient传输json信息并解决中文乱码问题
- web服务器的Content-Type为text/plain时返回出现中文乱码问题解决
- python使用requests爬取网页,遇到中文出现遇到中文出现乱码的编码问题及解决乱码的编码问题及解决
- ASP.NET MVC中解析淘宝网页出现乱码问题的解决方法
- python 解决抓取网页中的中文显示乱码问题
- 解决网爬工具爬取页面信息出现乱码的问题
- 解决zabbix图中出现中文乱码问题_落英缤纷