web连接mysql设置编码格式_Web乱码解决办法

在项目中偶尔会遇到jsp传到后台出现中文乱码而不知所措.下面将讲解出现中文乱码的几种情况.

jsp页面没有设置编码格式,

后台没有在web.xml中配置字符编码过滤器,

在ajax提交的时候用get提交,

数据库连接的时候也可以试着加上字符编码,

所有的前台和后台字符编码必须一致.

JSP页面没有设置编码格式

JSP中“charset”与“pageEncoding”的区别

pageEncoding:表示页面编码,是设置JSP页面源代码的字符编码格式,如果该项的值是utf-8,则JSP源代码里不能写汉字了,如果你用的是eclipse等工具的话,保存时他会提示有一个错误,改成gbk就没事了。

charset:表示字符编码,是请求服务器以后返回过来的内容的字符编码,即使pageEncoding设置了gbk,保存,运行程序,查看页面时会发现刚才写的汉字不能正常显示,把charset改成gbk,就好了

注意:在设置JSP页面源代码字符编码的时候,如果有pageEncoding这一项,则采取这一项的值,如果没有,采取charset的值,如果都没有,采取iso8859-1。pageEncoding 和charset的预设都是 ISO8859-1. 而随便设定了其中一个, 另一个就跟着一样了(TOMCAT4.1.27是如此). 但这不是绝对的, 这要看各自JSP容器的处理方式。如:在Tomcat中如果在jsp中设定了pageEncoding,则contentType也跟着设定成相同的编码了,但是在resion中就不是,resin中还会用默认的,这点通过查看编译后的类servlet java文件就可以看到这一点,而问题恰恰就出在这里,所以,在jsp中,如果是在resin下最好还是明确的单独设定这2个属性。

JSP的两次编码和三个阶段

JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat返回来的网页,用的是charset。

第一阶段:将jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码,或者无法编译。

第二阶段:由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。

第三阶段:Tomcat(或其的application container)载入和执行阶段,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数charset就发挥了功效。

总结:通常我们在JSP页面设定即可。

在web.xml中配置字符编码过滤器

在web.xml中配置编码过滤器时应注意的过滤器的顺序,一般将代码放在web.xml中开头的位置,因为拦截有顺序,如果放在后面的话容易拦截不到。

采用Struts2中的编码过滤器配置:

struts-cleanup

org.apache.struts2.dispatcher.ActionContextCleanUp

struts-cleanup

/*

采用Spring中的编码过滤器配置:

characterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

forceEncoding

true

characterEncodingFilter

/*

数据库连接时设置字符编码

例如:

url="jdbc:mysql://localhost:3306/Laptop?useUnicode=true&characterEncoding=utf-8"

在Tomcat中配置之请求字符串编码

默认情况下,如果tomcat中部署的webservice或者web网站需要有中文的请求参数,而这时候我们直接在浏览器中输入中文那么接受到的将是乱码,无法达到我们的需求,这时候我们就需要对Tomcat的请求链接的编码格式进行设置了。

在Tomcat下有个conf目录,里面有一个Server.xml的配置文件,其中对于每个端口都有如下的配置:

redirectPort="8443"/>

我们需要在这个配置的最后加上URIEncoding="UTF-8",即最后的形式是:

redirectPort="8443" URIEncoding="UTF-8"/>

注意:有人说URIEncoding="UTF-8"必须加在最后面,否则无效,我测试时没有发现该问题,但为以防万一还是它加在后面吧;另外修改完Server.xml文件后必须重启服务。这种配置只对GET类型的请求有效,对POST请求无效。即POST请求的参数编码仍然是“ISO8859-1”,而不是“UTF-8”

当出现如下场景时可使用该方法:表单填写完信息后提交,将提交信息在控制台中打印出来,如果表单的使用GET提交出现乱码,而使用POST提交后控制台打印显示正常,则可以尝试使用“修改Tomcat中conf路径下的Server.xml文件”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值