- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于JSPWeb应用中文乱码问题浅析
基于JSPWeb应用中文乱码问题浅析 [摘要]提出基于JSP开发的WEB应用程序中中文乱码问题产生的几点原因,针对每一个原因提出具体的解决方案,并作出归纳性的总结。 [关键词]JSP字符编码中文乱码 中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)1110133-01 一、字符编码简介 计算机中的数据都必须以二进制的形式进行存储和处理,对非数值的文字和其他符号要进行数字化处理,就要用二 进制编码来表示文字和符号,即字符编码(Character Code)。 Unicode编码是由国际语言组织设计的,可以包含全世界的所有语言文字,现在大部分具有国际化特征的软件核心字符处理都是以Unicode为基础的,在软件运行时根据当时的Locale/Lang/Codepage设置需要实现Unicode和本地字符集的相互转换,甚或以Unicode为中间的两个不同本地字符集的相互转换[1]。 ISO-8859-1,又称Latin-1或“西欧语言”,包含美国ASCII的低7位,属于单字节字符编码;GB2312是由我国国家标准总局发布的一套汉字编码,属于双字符编码,基本集共收入汉字6763个和非汉字图形字符682个,在此基础上又扩充得到了GBK,能够支持大多数的汉字和字符编码。 二、JSP产生乱码问题的原因分析 基于web应用的JSP文件在运行时的本质被Web容器转换成Java源文件,随后编译成Servlet或class类文件。由于java内核和class文件都是基于unicode编码的,所以当jSP源文件中含有中文或是在编译的class文件中还有和unicode编码方式不同字符时就会出现乱码。Web容器处理页面请求的整个过程如下图所示: 整个过程中可能产生乱码的环节有3处,分别是:(1)客户端提交的参数值中含有中文;(2)JSP页面中含有中文;(3)连接的数据库中含有中文。 三、解决中文乱码问题的方案 (一)客户端提交的参数值中含有中文 通过表单提交给JSP的变量,默认情况下采用ISO-8859-1编码方式,汉字没有办法正确显示,要正确从request对象中提取表单提取过来的数据,必须对其编码方式进行转换。第一种方法是设置request对象的目标编码方案,这种方法必须在从request对象提取任何数据之前进行设置[2],设置语法为: request.setCharacterEncoding(“GBK”); request.getParameter(“var”); 另一种方法是将数据从request中读取出来,此时数据以ISO8859-1方式编码,使用之前通过程序语句将其转变成为GBK编码方案,语句为: String str=request.getParameter(“var”); byte b[]=str.getBytes(“ISO-8859-1”); str=new String(b); 这两种方法指定了输入的字符编码为GBK,JVM接收到的输入从ISO-8859-1转换为GBK编码后再输出,就可以很好的解决中文乱码问题,但值得注意的是,这两种方法只对以post方式提交的表单变量有效,对get方式无效。 (二)JSP页面中含有中文 默认情况下JSP文件内容输出的编码方式是ISO-8859-1,如果想要输出没有中文乱码的页面,必须在JSP文件头加上预编译指令,设置语法为: [3] 这样就指定了JSP页面字符的编码方式为GBK,因此能够正确的识别中文。 (三)连接的数据库中含有中文 大部分数据库默认支持的编码格式为ISO-88559-1,也就是以这种编码来存储和读取数据,必须先将中文转化为GBK编码然后再以ISO-88559-1的编码方式写入数据库中,反之也亦然[3]。解决方法如下: 1.在连接数据库的URL中加上useUnicode=truecharacterEncoding =GBK,以连接mysql数据库为例,设置连接字符串为: Jdbc:mysql://localhost:3306/test?user=rootpassword=1234useUnicode=truecharacterEncoding=gbkautoReconnect=truefailOverReadOnly=false,其中数据库名为“test”,用户名为“root”,密码为“1234”。 2.将数据库默认支持的编码格式改为GBK,以mysql数据库为例,在安装完成的时候会提示进行数据库的配置,选择默认的
文档评论(0)