- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
jsp中文编码乱码分析与解决
jsp中文编码乱码分析与解决
摘 要 jsp技术目前普遍应用于网络编程,java在中文处理方面经常出现乱码现象。本文从分析各种常见的jsp页面中文乱码产生的原因入手,并给出该乱码的解决方案。经过多次实践,基本可以解决常见jsp页面常见的中文乱码问题,有着很好的广泛性。
关键词 网络编程;中文乱码;jsp页面编码
中图分类号TP39 文献标识码A 文章编号 1674-6708(2011)57-0183-02
0引言
JSP(Java Server Pages)是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准,jsp技术采用java作为开发脚本语言,java本身有着很好的跨平台性,但是jsp在结合页面技术后,最使人头疼的一个问题就是不能很好的处理中文乱码问题,在开发过程中带来诸多不便,本文从剖析中文乱码产生的各种原因入手,并给出相应的解决方案。
1中文乱码的根源
1)中文的编码很多,在不同的情况下可能有多种不同的二进制值;
2)在某些应用中传递数据时,可能把中文转换成其它形式;
3)在一个应用系统中,编码之间存在各种各样的转换;
4)在转换过程中需要制定编码方式;
5)在具体实践过程中,可能忽略或忘记设置编码;
6)不同的软件环境其编码设置方式不同也容易导致中文乱码;
7)编码工具的多样性以及对编码的模糊认识不清。
2常见的jsp页面中文乱码
网上常出现的 JSP/Servlet encoding 问题一般都表现在 browser 或应用程序端,如:
浏览器中看到的 Jsp/Servlet 页面中的汉字怎么都成了‘?’;浏览器中看到的 Servlet 页面中的汉字怎么都成了乱码;JAVA 应用程序界面中的汉字怎么都成了方块;Jsp/Servlet 页面无法显示 GBK 汉字;Jsp/Servlet 不能接收 form 提交的汉字;JSP/Servlet 数据库读写无法获得正确的内容。
3 中文乱码产生原因分析
1)在jsp中如果指定了,那么在该jsp中所有用到的数据,如果?]有指定编码,那么这些数据的编码方式为A。
从request得到的数据如果没有指定request的编码的话,默认编码为iso-8859-1。
假设从别的地方得到的数据是使用原来初始的编码的,比如从数据库得到数据,如果数据库的编码是B,那么该数据的编码是B而不是A,也不是系统默认的,此时,如果要输出的数据的编码不是A,那么,很可能显示乱码,所以首先要将数据正确转化为编码A,然后再输出;
2)在jsp中如果没有指定,那么默认的A编码为iso-8859-1;
3)Servlet中如果执行了像 response.setContentType(text/html;charset=A),说明将response的字符输出流编码设置为A,所有要输出的数据的编码要转化为A,否?t就会出现乱码。Servlet中从request得到的数据的编码和jsp中一样的,但是在servlet java文件中构造的数据是使用是系统默认的编码(iso-8859-1);servlet中从外部得到的数据使用的是原来的编码,比如从编码为B的数据库得到的数据是编码为B,不是A,也不是系统默认的编码。
4中文乱码解决方案
4.1 JSP页面显示为乱码
如果只在页面中加入,该处指定的编码仅为浏览器对字符的显示处理,但是服务器的编码方式和浏览器的编码方式对字符的单独处理,所以还要在页面的第一行加上:
,就可以消除乱码了。
4.2 Servlet接收Form/Request传递的参数时显示为乱码
方法1:在使用request获取参数前,加上此语句:request.setCharacterEncoding(A), 此处设置的编码要和传递参数的页面采用的编码方式一致。
方法2:使用过滤器(filter),在doFilter方法中做如下处理:
package com.knorray.filters;
public class CharEncodingFilter implements Filter{
protected String encoding = null;
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter(encoding);
}
public void doFilter(ServletRequest
文档评论(0)