当前位置:首页 > 读后感 > 基于JSP的Web应用中文乱码问题浅析 表格乱码问题怎么处理
 

基于JSP的Web应用中文乱码问题浅析 表格乱码问题怎么处理

发布时间:2019-02-23 04:33:01 影响了:

  [摘要]提出基于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=true&characterEncoding
  =GBK,以连接mysql数据库为例,设置连接字符串为:
  Jdbc:mysql://localhost:3306/test?user=root&password=1234&useUnicode=true&characterEncoding=gbk&autoReconnect=true&failOverReadOnly=false,其中数据库名为“test”,用户名为“root”,密码为“1234”。
  2.将数据库默认支持的编码格式改为GBK,以mysql数据库为例,在安装完成的时候会提示进行数据库的配置,选择默认的字符编码方式为gbk或gb2312.如果在安装的时候没有配置,也可以修改在mysql安装目录下的配置文件my.ini,具体更改方法为:将里面的default-character-set=
  latin1改为default-character-set=gbk,记住有两处可修改的地方,然后重起mysql服务即可,这样就将mysql的默认编码方式指定为GBK编码了。此时应该在mysql命令行用\s命令检查一下看是否改好了。
  
  四、总结
  
  要解决基于WEB应用的JSP中文乱码问题,归根到底是要弄清WEB应用的整个运行过程,从源头到结尾,消除每一个可能产生字符编码转换的环节,保持字符编码在转换过程中的一致性,即保证在程序的入口和出口汉字信息不失真,这样就可以彻底解决基于JSP应用程序开发中的中文乱码问题了。
  
  参考文献:
  [1]Hans Bergsten.JSP设计,中国电力出版社,2007.
  [2]栗菊民,Java Web应用程序设计,机械工业出版社,2009.
  [3]Vivek Chopra.Jon Eaves.Rupert Jones.JSP程序设计,人民邮电出版社,2006.
  [4]MontyM,Widenius,AxmarkD,etal1MySQL Referenc Manual[M]1[s1l1]:
  O1Reilly&Associates, Inc,20021.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3