这是一篇关于中文方面开题报告范文,与基于JSP的Web应用中文乱码问题相关毕业论文。是论文格式专业与中文及字符及乱码方面相关的免费优秀学术论文范文资料,可作为中文方面的大学硕士与本科毕业论文开题报告范文和职称论文论文写作参考文献下载。
[摘 要 ]提出基于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容器转换成Ja源文件,随后编译成Servlet或class类文件.由于ja内核和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文件头加上预编译指令,设置语法为:
<%@ page contentType=”text/,charset=GBK”%>[3]
这样就指定了JSP页面字符的编码方式为GBK,因此能够正确的识别中文.
(三)连接的数据库中含有中文
大部分数据库默认支持的编码格式为ISO-88559-1,也就是以这种编码来存储和读取数据,必须先将中文转化为GBK编码然后再以ISO-88559-1的编码方式写入数据库中,反之也亦然[3].解决方法如下:
1.在连接数据库的URL中加上useUnicode等于true&characterEncoding
等于GBK,以连接mysql数据库为例,设置连接字符串为:
Jdbc:mysql://localhost:3306/testuser等于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应用程序开发中的中文乱码问题了.