首页 > 程序开发 > 综合88必发娱乐官网 > 其他综合 > 正文
jsp中文乱码问题
2017-06-19       个评论    来源:  
收藏    我要投稿

1、JSP页面中文乱码问题

在JSP页面中输出中文时乱码,这是因为字符编码不正确所导致。JSP页面的编码方式有两个地方需要设置:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ page contentType="text/html;charset=utf-8"%>

其中,pageEncoding指的是JSP文件本身在本地保存时的编码方式。

contentType的charset指的是服务器发送网站内容给客户端时使用的编码。

解决方案:在JSP页面设置pageEncoding和contentType的charset其中一个为支持中文的编码格式(UTF-8,gbk,gb2312)。设置一个,另一个会默认和它一样。如果两个都设置则最好按照上面的格式进行设置(可以不一样)

从第一次访问JSP页面开始,到这个页面被发送给客户端,这个JSP页面要经过三次编码转换、:

(1)根据pageEncoding的设定字符编码读取JSP生成的Servlet(.java),结果生成的servlet的编码统一使用utf-8,如果pageEncoding设定错了或者是没有设定都会造成中文乱码。

(2)由JAVAC编译指令将Java源码编译为Java字节码,无论读取JSP指定的是什么编码方案,经过这个阶段的结果全部为UTF-8编码的。

JAVAC用UTF-8编码读取Java源码,编译成UTF-8编码的字节码(即class)这是JVM对常数字串在二进制码内的表达规范。

(3)Tomcat载入和执行字节码,根据contentType的设置charset的编码方案向客户端浏览器输出结果。

2、表单提交乱码问题

在JSP页面中提交表单时(用POST或GET方法),使用request.getParameter()方法获取表单控件值时出现乱码。出现这种现象的原因是因为在TOMCAT中处理参数时,采用缺省的字符集为ISO-8859-1,而这个字符集是不包含中文的,所以出现乱码。

可以采用如下方式: 将ISO-8859-1字符编码格式转换为GBK格式。

在提交了中文的地方都采用这种方式来处理。但是这样不符合面向对象的基本设计思想。

new String(s.getBytes(“ISO-8859-1”),“GBK”); //s为要转换的字符串变量

最好方式如下:

在TOMCAT中由于对POST方法和GET方法提交数据处理方式不同,因此解决中文乱码方法也不相同。

对于GET方法提交的表单,要在TOMCAT的HOME主目录中的CONF目录下的server.xml中进行配置。在\conf目录下的server.xml文件中,找到对8080端口进行服务的Connector组件的设置部分,给这个Connector组件添加一个属性 :URIEncoding= “GBK”。修改后的Connector组件的设置。

这样修改后,重启TOMCAT服务器可以正确处理GET访求提交的请求数据了。

对POST方法提交的表单数据可以通过编写过滤器的方法解决,过滤器在用户提交的数据被处理之前被调用,可以在这里改变请求参数的编码方式。我们只要在过滤器中设置一个命令:

request.setCharacterEncoding("gbk");
点击复制链接 与好友分享!回本站首页
上一篇:Spark88必发娱乐官网指南(三)
下一篇:VIM简单配置
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 |
版权所有: 88bifa.com--致力于做实用的IT技术学习网站