jsp开发过程中解决中文乱码问题

jsp开发过程中解决中文乱码问题

ID:12627656

大小:36.50 KB

页数:6页

时间:2018-07-18

jsp开发过程中解决中文乱码问题_第1页
jsp开发过程中解决中文乱码问题_第2页
jsp开发过程中解决中文乱码问题_第3页
jsp开发过程中解决中文乱码问题_第4页
jsp开发过程中解决中文乱码问题_第5页
资源描述:

《jsp开发过程中解决中文乱码问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在jsp开发过程中会遇到各种中文乱码问题,对乱码的处理方法也有所不同!究其原因.大部分是因为编码默认采用ISO-8859-1或者是编码不一致导致的,悲剧的是默认的ISO-8859-1编码不支持中文!(唉,中国...感慨一下,不解释)所幸,UTF-8,GBK,GB2312都是支持中文的!    1.   jsp页面中文乱码   这种乱码最常见也最好解决 在page指令中添加页面内容和显示方式的设置,如下两种都可以:·<%@pagelanguage="java"import="java.util.*"pageEncoding="gb23

2、12"%>·<%@pagelanguage="java"import="java.util.*"ContentType="text/html;charset=gb2312"%>         有人会问pageEncoding和ContentType有什么区别,简单说         contentType指定的是JSP页最终Browser(客户端)所见到的网页内容的编码         pageEncoding指定JSP编写时所用的编码2.表单提交中文乱码 当用Request对象获取客户提交的汉字代码的时候,会出现乱码 Metho

3、d=”POST”接收数据的文件中要加入<%request.setCharacterEncoding("gb2312");%>2.中文作为参数传递乱码newString(userName.getBytes("ISO-8859-1"),"gb2312")这句代码是转换编码格式的关键,这种转码方式还可以用在读取数据库中文乱码的转码!但要是原来的字符编码不是ISO-8859-1时这个方法就会失效,出错!try{  byte[]tempByte=gbStr.getBytes("GB2312");  uniStr=newString(tempB

4、yte,"ISO8859_1");    }catch(Exceptionex){   }你也可以在直接的转换,首先你将获取的字符串用ISO-8859-1进行编码,然后将这个编码存放到一个字节数组中,然后将这个数组转化成字符串对象就可以了,例如:Stringstr=request.getParameter(“字符串”);ByteB[]=str.getBytes(“ISO-8859-1”);Str=newString(B);2.读取cookie时出现乱码写入cookie时先编码CookienameCookie=newCookie("n

5、ame",java.net.URLEncoder.encode(strname,"GB2312"));读取cookie时再解码Stringname=java.net.URLDecoder.decode(name,"GB2312")或者采用树上第136页的方法写入cookie时先编码,将汉字编码转换为Unicode编码,解决汉字乱码问题读取cookie时再解码,将Unicode编码转换为汉字编码,解决汉字乱码问题2. 编码基本知识 最早的编码是iso8859-1,和ascii编码相似。但为了方便表示各种各样的语言,逐渐出现了很多标准编

6、码,重要的有如下几个。 2.1. iso8859-1 属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母'a'的编码为0x61=97。 很明显,iso8859-1编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。而且在很多协议上,默认使用该编码。比如,虽然"中文"两个字不存在iso8859-1编码,以gb2312编码为例,应该是"d6d0 cec4"两个字符,使用iso8859-1编码的时候则将它拆开为4个字节

7、来表示:"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 这是最统一的编码,可以用来表示所有语言的字符

8、,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容iso8859-1编码的,也不兼容任何编码。不过,相对于iso8859-1编码来说,uniocode编码只是在前面增加了一个0字节,比如字母'a'为"00 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。