JSP中文乱码问题

来源:互联网 发布:数据库服务器选择 编辑:程序博客网 时间:2024/05/16 19:22

这里介绍两类中文乱码问题:

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")

%>


总之,出现乱码一般都是因为发送方与接收方的编码方式不一致导致的,尽量不要使用默认的编码方式,在文件中显式指定编码方式就可以了。尤其是在操作数据库的时候,必须将编码类型转换成与数据库一致才可以,否则,数据库中的内容将为乱码。




0 0
原创粉丝点击