JSP中文乱码问题
2016-05-20 00:10
351 查看
这里介绍两类中文乱码问题:
1.myeclipse打开文件乱码;
2.参数在页面间传递时出现乱码。
myeclipse打开文件乱码
有时候会遇到用文本编辑器打开文件,显示正常,但是用myeclipse打开就提示错误,这是因为myeclipse默认的编码方式与当前编码方式不一致导致的。可以在window -- preferences -- myeclipse
--files and editors 中查看修改。但是修改myeclipse 的配置是不靠谱的,因为无法保证外部文件的编码格式都是一样的,所以,最好还是在文件内部指定编码方式,只需要在jsp文件的最前面加上一行<%@ page contentType="text/html; pageEncoding="gb2312"%>就可以了。如果一个JSP文件引用了其他多个jsp文件,这多个文件可以每个都设置编码方式而不会冲突,但是同一个文件内只能指定一次编码方式,多次指定会报错。
参数在页面间传递时出现乱码
响应中的乱码
参数在页面间传递时出现乱码可以包含2种情况:1.响应中的乱码;2.请求中的乱码。
所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服务器一端放入响应(response)中,然后发送给浏览器,如果响应中的数据无法被正常解析,就会出现乱码问题。
在iso-8859-1,gb2312, utf-8以及任意一种编码格式下,英文编码格式都是一样的,每个字符占8位,而中文就麻烦了,在gb2312下一个中文占16位,两字节,而在utf-8下一个中文要占24位,三字节。浏览器在不知道确定编码方式的情况下,就会把这些字符从中间截断,再显示的时候就乱掉了。所以,想要解决乱码问题,就是要告诉浏览器我们到底使用了什么样的编码方式。
因为服务器要先从本地读取jsp文件,然后经过处理后写入响应,所以我们首先要知道的就是jsp文件的编码格式。要在http的响应(response)中添加编码信息,使用如下方式:<%@ page contentType="text/html;charset=gb2312"%>,用来指定响应的类型和编码格式,这样浏览器就可以从响应中获得编码格式了。
还需要指定当前html的编码格式,<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
请求中的乱码
通常是post发送的消息解释为乱码。先把form里加上method="POST",让form提交的时候使用POST方式。发送请求的时候,使用的编码是iso-8859-1,意味着只有英文是有效字符,所以如果使用默认的方式从请求获取数据,中文一定会全部变成乱码。我们要jsp最前面加上一条java语句,设置请求的字符编码。
<%
request.setCharacterEncoding("gb2312")
%>
总之,出现乱码一般都是因为发送方与接收方的编码方式不一致导致的,尽量不要使用默认的编码方式,在文件中显式指定编码方式就可以了。尤其是在操作数据库的时候,必须将编码类型转换成与数据库一致才可以,否则,数据库中的内容将为乱码。
1.myeclipse打开文件乱码;
2.参数在页面间传递时出现乱码。
myeclipse打开文件乱码
有时候会遇到用文本编辑器打开文件,显示正常,但是用myeclipse打开就提示错误,这是因为myeclipse默认的编码方式与当前编码方式不一致导致的。可以在window -- preferences -- myeclipse
--files and editors 中查看修改。但是修改myeclipse 的配置是不靠谱的,因为无法保证外部文件的编码格式都是一样的,所以,最好还是在文件内部指定编码方式,只需要在jsp文件的最前面加上一行<%@ page contentType="text/html; pageEncoding="gb2312"%>就可以了。如果一个JSP文件引用了其他多个jsp文件,这多个文件可以每个都设置编码方式而不会冲突,但是同一个文件内只能指定一次编码方式,多次指定会报错。
参数在页面间传递时出现乱码
响应中的乱码
参数在页面间传递时出现乱码可以包含2种情况:1.响应中的乱码;2.请求中的乱码。
所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服务器一端放入响应(response)中,然后发送给浏览器,如果响应中的数据无法被正常解析,就会出现乱码问题。
在iso-8859-1,gb2312, utf-8以及任意一种编码格式下,英文编码格式都是一样的,每个字符占8位,而中文就麻烦了,在gb2312下一个中文占16位,两字节,而在utf-8下一个中文要占24位,三字节。浏览器在不知道确定编码方式的情况下,就会把这些字符从中间截断,再显示的时候就乱掉了。所以,想要解决乱码问题,就是要告诉浏览器我们到底使用了什么样的编码方式。
因为服务器要先从本地读取jsp文件,然后经过处理后写入响应,所以我们首先要知道的就是jsp文件的编码格式。要在http的响应(response)中添加编码信息,使用如下方式:<%@ page contentType="text/html;charset=gb2312"%>,用来指定响应的类型和编码格式,这样浏览器就可以从响应中获得编码格式了。
还需要指定当前html的编码格式,<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
请求中的乱码
通常是post发送的消息解释为乱码。先把form里加上method="POST",让form提交的时候使用POST方式。发送请求的时候,使用的编码是iso-8859-1,意味着只有英文是有效字符,所以如果使用默认的方式从请求获取数据,中文一定会全部变成乱码。我们要jsp最前面加上一条java语句,设置请求的字符编码。
<%
request.setCharacterEncoding("gb2312")
%>
总之,出现乱码一般都是因为发送方与接收方的编码方式不一致导致的,尽量不要使用默认的编码方式,在文件中显式指定编码方式就可以了。尤其是在操作数据库的时候,必须将编码类型转换成与数据库一致才可以,否则,数据库中的内容将为乱码。
相关文章推荐
- MVC模式
- JSP Session对象
- JSP response的使用
- JSP page对象
- js输入框验证
- 数据库 JAVA JavaScript Struts2
- js笔记00001
- js笔记00002
- js笔记00003
- 字符串转JSONArray
- JS基础知识
- JSP和JS的区别(新手必读)
- angular.js phonecat翻译
- JavaScript跨域(1):什么是跨域,如何跨域
- 关于JSP的思考
- js事件、事件委托
- Asynchronous JavaScript And XML (Ajax)由浅入深
- JS中的文档碎片
- JSON和XML区别和优缺点比较
- jsp的静态引入与动态引入的异同点