基于J2EE+Tomcat5.0+MySQL5.5应用开发中乱码问题研究

基于J2EE+Tomcat5.0+MySQL5.5应用开发中乱码问题研究


2024年4月28日发(作者:)

研究与开发 / 

/ 

基于J2EE+Tomcat 5.0+MySQL 5.5应用开发中 

乱码问题研究★ 

靳宗信 , 华 丽 。 樊红娟。 

(1.黄河科技学院信息_r程学院计算机科学系,3 ̄F;k''II 450063;2.黄河科技学院文献信息研究所,郑州450063; 

3.河南省劳动干部学校电教中心.郑州450011) 

摘 要:在基于Java语言的编程中,经常碰到汉字显示出现乱码的问题,尤其是在Web应用的开发 

中配合Tomcat、MySQL使用时更是如此。在论述字符集和字符编码的基础上,对不同情况 

下Web开发中出现的乱码问题进行总结.并对每种情况进行详细的描述,给出相应的解决 

方案 

关键词:Java;Tomcat 5.0;MySQL 5.5;乱码 

0 引言 

字符表.也就是该字符集中每个字符所对应的位模式。 

因为Java与平台的无关性和开发环境的多样性, 

使得Java在开发的过程中经常会遇到不同文字编码之 

间相互转化的问题 乱码就是在这个转化过程中没有 

正确 配对应字符串的字符集所致。一般情况下,字符 

所以.字符编码就是字符与代码值之间的映射 在Web 

开发中常用的编码方式主要有IS08859—1.Unicode. 

GB2312,GBK和UTF-8。 

(1)IS08859-1 

串被Java应用程序转化之前,是根据操作系统默认的 

编码方式编码 所以.在Java程序运行时,就面临着从 

Unicode编码到对应的操作系统及浏览器支持的编码 

格式转换的问题 在此过程中.每一步都必须转换正 

确.有一个步骤转换l叶J现问题.就会 现汉字乱码。因 

此,在Java系统的输入、输 和操作系统之间,Tomcat 

国际标准组织(ISO)定义了几种不同的字符集,它 

们是在ASCII码的基础上增加了其他语言和地区需要 

的字符。其中最常用的是IS08859—1,也叫做Latin—l, 

其中0~127的字符与ASCII码相同 

(2)Unicode 

Unicode(统一的字符编码标准集)使用2个字节对 

每一个字符进行编码.最高位不表示符号位.所以总共 

能表示65535个字符 Unicode中每个字符都有唯一的 

表示方式,是Java语言默认的字符集 Unicode中0~ 

255的字符与ISO8859—1中的一致 

(3)GB2312 

和MySQL中都必须采用统一的编码方式.这样才能彻 

底解决系统开发中的中文乱码问题 

1 相关编码方式 

计算机中所有字符的集合称为“字符集”.要在计 

算机表示这些“字符集”中的字符就必须对其进行编 

GB2312是中华人民共和国国家标准汉字信息交 

换用编码.简称国标码 它采用两个字节来表示一个字 

码 字符编码规定了一个“字符集”中的字符在计算机 

中应该用多少个字节来表示.同时制定了该字符集的 

符,分别称为高位和低位。GB2312适用于汉字处理、汉 

字通信等系统之间的信息交换.基本集共收入汉字 

★基金项目:河南省2010年度科技攻关计划项目(No.102102210433)、郑州市2009年度科技发展计划项目(No.2—48) 

收稿日期:2010—11—11 修稿日期:2010—12-03 

作者简介:靳宗信(1979一),男,硕士,山东夏津人,研究方向为人工智能、智 ̄g4-a息处理 

现代计算机2010.12 o 

一 

研究与开发 

\ 

6763个和非汉字图形字符682个 整个字符集分成94 

charset=gb2312”> 

个区,每区有94个位。每个区位上只有一个字符 

(4)GBK 

以减少中文乱码的发生 

(2)用户提交的数据是乱码 

用户提交的数据是乱码是指request对象取得用 

户提交的中文信息后.输出到控制台是乱码.原因是 

request对浏览器提交的数据解码不正确 对于这种情 

况,可以单独采用request的setCharacterEncoding()方 

GBK编码是GB2312的扩展.除了完全兼容 

GB2312外.还对繁体中文、一些不常用的汉字和许多 

符号进行了编码。它也是现阶段Windows和其他一些 

中文操作系统的默认字符集 GBK字符集包含了 

20902个汉字.其编码范同是0x814O~0xFEFE 

(5)UTF-8 

使用Unicode编码.一个英文字符要占两个字节. 

如果都采』}}j Unicode编码.对于英文信息来说,将会使 

数据量增加一倍..为了减少存储和传输英文字符数据 

的数据量.可以使用UTF一8编码 它用l到6个字节 

编码UniCO(1e字符.用在网页上可以在同一页面 示中 

文简体繁体及其他语言(例如日文,韩文等)。 

2 Java Web开发中文乱码问题 

2.1 JSP页面中的乱码及解决方案 

造成JSP贞面中的乱码的原凶有多种.现总结如 

下: 

(11页面显示的是乱码 

在访问某个JSP界面或者Servlet产生的界面时. 

界面上显示为乱七八糟的字符或者是一串问号 对此 

要分析其乱码的来源,这可能是浏览器显示不正确,也 

可能是后台在动态生成界面的时候.其内容就是乱码。 

先查看页面的源文件.看里面的中文内容足不是 

乩码 如果是乱码.说明是由于后台处理造成的.如果 

不是乱码.则说明浏览器没有正确地解析页面的编码。 

对此只需要设置JSP或者Servlet的eontentType属性 

就可以了。对于JSP中的设置使用的是page指令,设 

置如下. 

<%@page contentType=” ̄ext/html;charset=gb23 12”> 

对于Servlet生成的界面.可以在输 页面之前调 

用response的setContentType()方法,其代码形式如下: 

response.setContentType(“text/html;charset=gb23 12”1 

另外.在生成的HTML文件的头部可以加入如下 

代码: 

<recta http-equiv=’’contenttype”content=’’text/html; 

0 现代计算机2010.12 

法进行处理 如果需要处理的页面过多时.单个处理就 

会比较麻烦.这时.可以通过Fiher过滤器将所有的re. 

quest编码都进行设置,而不需要单独修改每个页面。 

(3)数据库中的数据是乱码 

数据库中的数据是乱码原因是数据库中传人的是 

GB2312/GBK编码.而对方却按照ISO8859—1处理 解 

决方法是在Java程序巾指定输出编码是GB2312/GBK. 

在数据库中设置传人/输}IJ编码是GB2312/GBK 

2.2 Tomcat中的乱码及解决方案 

有时乱码的产生和ToIncat有关.这时要修改应用 

服务器的server.xmI配置文件 Tomcat服务器默认的编 

码ISO一8859—1.可以把它改成中文编码 具体是修改 

如下: 

<Connector port=”8080”protocol=”HTTP/1 1 1” 

maxThreads:”l 50”connectioffl、imeout=”20000”edirectPort 

=”8443”URI Encoding=’GBK’/> 

本例修改为GBK编码.当然也_口『以使用其他字符 

集编码.但一定要注意使前后环节使用的字符集统一 

或者前后兼容 

2.3 MySQL中的乱码及解决方案 

MySQL中乱码问题归根到底是字符集的问题.从 

字符集设置方面考虑,不外乎几个方面:server,client, 

database。connection和results 解决方法有下面五种: 

(1)修改my.ini(MySQL Server Instance Configura— 

tion文件1.修改方法如下: 

#Client Section 

[client] 

port=3306 

[mysq1] 

default-character—set=gbk 

#Server Section 

【mysqld] 

default——character—.set=gbk 

研究与开发 

/ 

/ 

/ / 

f2)修改data目录中相应数据库目录下的db.opt配 

3 结语 

置义件.修改方法如下: 

default—character—set=gbk 

 

default—collation=gbkchinese

ci

本文总结了造成中文乱码的原因.并给出了相应 

的解决方案。总之,要弄清楚Java开发的整个运行过 

程.从头到尾消除每个可能产生乱码的环节,保持字符 

编码在转换过程中的一致性.这样才能彻底解决Java 

(3)数据库连接串中指定字符集,方式如下: 

URL=jdbc:mysqh//yourIP/college?user=root&password= 

yourPassword&useUnicode=true&characterEncoding=gbk 

开发中的中文乱码问题。 

参考文献 

注:在MySQL 4.1.0版要加useUnicode=true&char— 

acterEnc0ding=gbk。如果是5.0以的版本,可以不加此 

语句 

(4)在创建数据库时指定字符集,指定方式如下: 

create database yourDB CHARACTER SET gbk; 

【1】张文,唐鹏举.SGI IRIX6.5下基于J2EE+Tomcat 5.0+My— 

SQL 4.0应用开发的实现【J1_电脑开发与应用,2007,20(11): 

42-44 

【2】郭艳丽.Java的中文乱码及部分解决方法lJJ.焦作师范高 

等专科学校学报,2009,25(4):80~8l 

(5)在DOS命令』二要设置字符编码,设置方式如 

下: 

set nanles gbk 

【3】张言辉.J2EE平台下汉字乱码问题分析及解决【JJ.电脑知 

识与技术,2010,6f121:3019~3021 

Research on the Problem of Error Encoding Based on 

the Application of J2EE+Tomcat 510+MySQL 5I5 

JIN Zong—xin ,HUA Li , FAN Hong-juan 

(1.Department of Computer Science,Huanghe Science and Technology University,Zhengzhou 450063 

2.Institute of Literature Information,Huanghe Science and Technology University,Zhengzhou 450063 

3.Computer Center,Henan Labor Cadre,Zhengzhou 450011) 

Abstract 

We often encounter the problem of garbled characters display in Java programming,especially 

in the development of Web application with Java,Tomcat and MySQL.Summaries difference 

situations in the development of Web based on the discussion of the character set and character 

encoding.And describes every situation in details and proposes the corresponding solution. 

Keywords 

Java;Tomcat 5.0:MySQL 5.5:Error Encoding 

现代计算机2010.12 国 


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714317254a2423511.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信