JSP开发过程中解决中文乱码问题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JSP开发过程中解决中文乱码问题

在jsp开发过程中会遇到各种中文乱码问题,对乱码的处理方法也有所不同!究其原因.大部分是因为编码默认采用ISO-8859-1或者是编码不一致导致的,悲剧的是默认的ISO-8859-1编码不支持中文!(唉,中国...感慨一下,不解释)所幸,UTF-8,GBK,GB2312都是支持中文的! ???? 1.?? ?jsp页面中文乱码??? 这种乱码最常见也最好解决? 在page指令中添加页面内容和显示方式的设置,如下两种都可以: %@ page language=java import=java.util.* pageEncoding=gb2312% %@ page language=java import=java.util.* ContentType=text/html;charset=gb2312% ????????? 有人会问pageEncoding和ContentType有什么区别,简单说 ?????????contentType指定的是JSP页最终 Browser(客户端)所见到的网页内容的编码? ???????? pageEncoding指定JSP编写时所用的编码 表单提交中文乱码?当用Request对象获取客户提交的汉字代码的时候,会出现乱码? Method=”POST” 接收数据的文件中要加入% request.setCharacterEncoding(gb2312);% 中文作为参数传递乱码 new String(userName.getBytes(ISO-8859-1), gb2312)这句代码是转换编码格式的关键,这种转码方式还可以用在读取数据库中文乱码的转码!但要是原来的字符编码不是ISO-8859-1时这个方法就会失效,出错! try{ ?? byte[] tempByte = gbStr.getBytes(GB2312); ?? uniStr = new String(tempByte,ISO8859_1); ???? }catch(Exception ex){ ??? } 你也可以在直接的转换,首先你将获取的字符串用ISO-8859-1进行编码,然后将这个编码存放到一个字节数组中,然后将这个数组转化成字符串对象就可以了,例如: String str=request.getParameter(“字符串”); Byte B[]=str.getBytes(“ISO-8859-1”); Str=new String(B); 读取cookie时出现乱码 写入cookie时先编码 Cookie nameCookie = new Cookie(name, java.net.URLEncoder.encode(strname,GB2312)); 读取cookie时再解码 String name=java.net.URLDecoder.decode(name,GB2312) 或者采用树上第136页的方法 写入cookie时先编码,将汉字编码转换为Unicode编码,解决汉字乱码问题 读取cookie时再解码,将Unicode编码转换为汉字编码,解决汉字乱码问题 2.?编码基本知识? 最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编码,重要的有如下几个。? 2.1.?iso8859-1? 属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母a的编码为0x61=97。? 很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然中文两个字不存在iso8859-1编码,以gb2312编码为例,应该是d6d0?cec4两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:d6?d0?ce?c4(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节e4?b8?ad?e6?96?87。很明显,这种表示方法还需要以另一种编码为基础。? 2.2.?GB2312/GBK? 这就是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(兼容iso8859-1编码)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。? 2.3.?unicode? 这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容iso8859-1编码的,也不兼容任何编码。不过,相对于iso8859-1编码来说,

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档