JSP出现中文乱码问题解决方法详解

JSP出现中文乱码问题解决方法详解

2023年6月27日发(作者:)

JSP出现中⽂乱码问题解决⽅法详解在介绍⽅法之前我们⾸先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中⽂乱码问题有如下⼏个⽅⾯:页⾯乱码、参数乱码、表单乱码、源⽂件乱码。下⾯来逐⼀解决其中的乱码问题。⼀、JSP页⾯中⽂乱码在JSP页⾯中,中⽂显⽰乱码有两种情况:⼀种是HTML中的中⽂乱码,另⼀种是在JSP中动态输出的中⽂乱码。先看⼀个JSP程序:<%@ page language="java" import=".*" %> 中⽂显⽰⽰例

这是⼀个中⽂显⽰⽰例: <% String str = "中⽂"; (str); %> 上⾯这个JSP程序看起来好像是在页⾯显⽰⼏句中⽂⽽且标题也是中⽂。运⾏后在浏览器中显⽰如图所⽰原因在于没有在JSP中指定页⾯显⽰的编码,消除乱码的解决⽅案很简单上⾯代码中page命令修改成如下所⽰即可<%@ page language="java" import=".*" contentType="text/html; charset=GB2312" %> 中⽂显⽰⽰例

这是⼀个中⽂显⽰⽰例: <% String str = "中⽂"; (str); %> 再次运⾏乱码消失,原理就是向页⾯指定编码为GB2312,那么页⾯就会按照此编码来显⽰,于是乱码消失。⼆、URL传递参数中⽂乱码⼀般情况下在使⽤get⽅法提交表单的时候传递的参数如果是中⽂的话很可能会出现乱码。下⾯是⼀个⽰例程序<%@ page language="java" import=".*" contentType="text/html;charset=gb2312"%>

URL传递参数中⽂处理⽰例 <% String param = ameter("param"); %> 请点击这个链接

你提交的参数为:<%=param%> 上⾯这个JSP程序的功能就是通过⼀个URL链接向⾃⾝传递⼀个参数,这个参数是中⽂字符串,这个程序的运⾏效果如下图对于URL传递中⽂参数乱码这个问题,其处理⽅法⽐较特殊,仅仅转换这个中⽂字符串或者设置JSP页⾯显⽰编码都是不能解决问题的,需要修改Tomcat服务器的配置⽂件才能解决问题。在这⾥修改Tomcat的conf⽬录下的配置⽂件,具体改后的代码如下

redirectPort="8443" />在原来代码中添加URI编码设置URIEncoding=“gb2312”即可,重启Tomcat服务器可以得到正确的页⾯。其原理也和上⾯的情况类似,就是向程序指明编码类型,然后显⽰就正常了。三、表单提交中⽂乱码对于表单的数据可以使⽤ameter(“”)的⽅法获取,但是当表单中出现中⽂数据的时候就会出现乱码。⽰例代码如下<%@ page language="java" import=".*" contentType="text/html;charset=gb2312"%>

Form中⽂处理⽰例

下⾯是表单内容:

⽤户名: 密 码:

在上⾯的表单当中想AcceptFormCharset这个页⾯提价两项数据,下⾯是的内容:<%@ page language="java" import=".*" contentType="text/html;charset=gb2312"%> Form中⽂乱码 下⾯是表单提交以后⽤request取到的表单数据:

<% String userName = ameter("userName"); String password = ameter("password"); n("表单输⼊userName的值:" + userName + "

"); n("表单输⼊password的值:" + password + "

"); %>

在上⾯的程序中,如果表单输⼊没有中⽂,则可以正常的显⽰当输⼊的数据中有中⽂的时候,得到的结果如图所⽰。产⽣种结果的原因是Tomcat中对于post⽅法提交的表单采⽤的默认编码为ISO-8859-1,⽽这种编码格式不⽀持中⽂字符。对于这个问题可以采⽤转换编码格式的⽅法来解决,现在对AcceptFromCharset这个页⾯改动如下:<%@ page language="java" import=".*" contentType="text/html;charset=gb2312"%> Form中⽂乱码 下⾯是表单提交以后⽤request取到的表单数据:

<% String userName = ameter("userName"); String password = ameter("password"); n("表单输⼊userName的值:" + new String(es("ISO-8859-1"), "gb2312")+ "

"); n("表单输⼊password的值:" + new String(es("ISO-8859-1"), "gb2312")+ "

"); %>

经过这样的转换编码以后,所有的中⽂输⼊都可以⽤request对象正常取出。在上⾯这个程序中,第四⾏和第五⾏是转换编码格式的关键,先从ISO-8859-1格式的字符串中取出字节内容,然后在⽤GB2312的编码格式重新构造⼀个新的字符串。这样就可以⽀持中⽂变淡输⼊的正常取值和显⽰。改进以后程序运⾏结果如下经过上⾯的更改编码格式的处理,表单的中⽂输⼊乱码问题已经得到解决。但是如果上⾯的表单中的输⼊项不⽌是两个,那么每个输⼊项都需要进⾏编码转换,那样就很⿇烦了。这是我们就⽤到了⼤名⿍⿍的过滤器filter了。关于这⾥的内容⼤致的思虑和上⾯的⼀样具体做法请参照笔者的另⼀篇⽂章。四、Eclipse中JSP⽂件中⽂乱码在Eclipse或者MyEclipse中由于默认的JSP编码格式为ISO-8859-1,所以当打开由其他编辑器编辑的JSP⽂件时会出现乱码,如图所⽰对于这个问题我们只需要更改⼀下Eclipse或者是MyEclipse中对JSP的默认编码就可以了,修改的地⽅(我的MyEclipse版本为11)如图所⽰PS在Eclipse或者MyEclipse当中JSP⽂件默认的编码为ISO-8859-1,所以在JSP代码中间如果出现中⽂就不能保存,例如如下代码<%@ page language="java" import=".*" %> 中⽂显⽰⽰例

这是⼀个中⽂显⽰⽰例: <% String str = "中⽂"; (str); %> 修改后在保存的时候会提⽰如下:现这个提⽰的原因在于JSP源⽂件中有ISO=8859-1编码⽆法识别的中⽂字符,对于这个问题,解决办法就是在JSP页⾯中声明页⾯编码格式即可。声明后代码如下:<%@ page language="java" import=".*" pageEncoding="GB2312" %> 中⽂显⽰⽰例

这是⼀个中⽂显⽰⽰例: <% String str = "中⽂"; (str); %> 其中第⼀⾏中pageEncoding=“gb2312”指明了JSP页⾯编码采⽤GB2312,这样就可以正常保存JSP的源⽂件了。遇到问题⾸先分析问题出现的原因,只有知道了原因才能去解决,学习分析问题的来源远⽐解决这个问题重要的多。乱码问题的原因就是程序(Eclipse也好,浏览器也罢)的编码没有和编程⼈员的编码进⾏统⼀,(就像你和⼀个不懂中⽂的⼈⽤中⽂交流他当然不懂了)那么解决这个问题只需要将编程⼈员想要的编码告诉程序就可以了,以上解决乱码问题的种种⽅法都可以说是⼀种声明编码的过程,也就是说乱码问题终极解决⽅案就是:转码。这⾥的转码要么是编程⼈员⼿动转,要么就是声明⼀下让程序去转,换句话说就是:和不懂中⽂的交流,要么让他学中⽂,要么你就去学习他的语⾔。⽣活就是编程,编程就是⽣活,同之,通之到此这篇关于JSP出现中⽂乱码问题解决⽅法详解的⽂章就介绍到这了,更多相关JSP中⽂乱码问题解决⽅法内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687867431a52208.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信