在jsp开发过程中会遇到各种中文乱码问题.doc_第1页
在jsp开发过程中会遇到各种中文乱码问题.doc_第2页
在jsp开发过程中会遇到各种中文乱码问题.doc_第3页
在jsp开发过程中会遇到各种中文乱码问题.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在jsp开发过程中会遇到各种中文乱码问题,对乱码的处理方法也有所不同!究其原因.大部分是因为编码默认采用ISO-8859-1或者是编码不一致导致的,悲剧的是默认的ISO-8859-1编码不支持中文!(唉,中国.感慨一下,不解释)所幸,UTF-8,GBK,GB2312都是支持中文的! 1. jsp页面中文乱码 这种乱码最常见也最好解决 在page指令中添加页面内容和显示方式的设置,如下两种都可以: 有人会问pageEncoding和ContentType有什么区别,简单说 contentType指定的是JSP页最终 Browser(客户端)所见到的网页内容的编码 pageEncoding指定JSP编写时所用的编码2. 表单提交中文乱码当用Request对象获取客户提交的汉字代码的时候,会出现乱码 Method=”POST”接收数据的文件中要加入3. 中文作为参数传递乱码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);4. 读取cookie时出现乱码写入cookie时先编码Cookie nameCookie = new Cookie(name, .URLEncoder.encode(strname,GB2312);读取cookie时再解码String name=.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编码为例,应该是d6d0cec4两个字符,使用iso8859-1编码的时候则将它拆开为4个字节来表示:d6d0cec4(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是UTF编码,则是6个字节e4b8ade69687。很明显,这种表示方法还需要以另一种编码为基础。2.2.GB2312/GBK这就是汉子的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(兼容iso8859-1编码)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。2.3.unicode这是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容iso8859-1编码的,也不兼容任何编码。不过,相对于iso8859-1编码来说,uniocode编码只是在前面增加了一个0字节,比如字母a为0061。需要说明的是,定长编码便于计算机处理(注意GB2312/GBK不是定长编码),而unicode又可以用来表示所有字符,所以在很多软件内部是使用unicode编码来处理的,比如java。2.4.UTF考虑到unicode编码不兼容iso8859-1编码,而且容易占用更多的空间:因为对于英文字母,unicode也需要两个字节来表示。所以unicode不便于传输和存储。因此而产生了utf编码,utf编码兼容iso8859-1编码,同时也可以用来表示所有语言的字符,不过,utf编码是不定长编码,每一个字符的长度从1-6个字节不等。另外,utf编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。注意,虽然说utf是为了使用更少的空间而使用的,但那只是相对于unicode编码来说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论