Java编程中的中文乱码问题的研究
- 格式:pdf
- 大小:99.71 KB
- 文档页数:1
2013年7月下
消费电子
Consumer Electronics Magazine 计算机科学
Java编程中的中文乱码问题的研究
陈璐强
(沈阳理工大学应用技术学院,辽宁抚顺 113122)
摘要:中文乱码是Java编程中的一类常见问题,其主要是由于数据输入输出时的编解码字符集不统一造成的。
本文首先对该问题出现的原因进行了分析,然后分别就几处最为常见的乱码位置及其处理方式进行了详细分析。
关键词:中文乱码;Java编程;字符集
中图分类号:TP31 文献标识码:A 文章编号:1674—7712(2013)14—0111—01
Java语言具有灵活性高、可跨平台等特点,是当前所使 用的一种主流的编程语言。但是在使用Java编程过程中程序 员经常面临的一个问题就是中文汉字的显示问题,如何对带有 中文字符的JSP文件、使用JSP技术开发的web网页以及与J ava程序通信的数据库进行编程处理,以避免其中出现中文乱 码是java编程中需要重点注意的一类问题。 一、中文乱码在Java程序中出现的原因 Java程序规定的编码字符集为Unicode字符集,但是我 国很多本地系统或应用所使用的编码字符集则为GBK字符集, 这就使得使用两种不同字符集的应用在进行数据传输或交换 时首先需要将传输或交换的信息转换为本地可识别的字符集 才可以进入下一步处理。而由Java编程实现的应用涉及多个 领域,如浏览器、应用、服务器、数据库等,一旦其中某一部 分所使用的字符集与其他部门出现不兼容或转换错误,就容易 因输入输出编码格式的不一致而出现乱码问题。 二、常见的Java中文乱码位置及其解决方案 综合来看,Java中文乱码出现主要集中在以下几个位置: (1)基于JSP的中文web页面;(2)包含中文字符的提交数 据;(3)Java程序与数据库之问的通信数据。 (一)基于JSP的中文web页面乱码分析 用户在访问由JSP所生成的页面时有可能出现中文乱码, 导致该乱码出现的原因主要有两种,一种原因是由JSP在后台 生成动态页面时,其所生成的信息本身就是乱码,另一种原因 则是浏览器对编译JSP文件时显示不正确所导致的乱码。 为提高解决效率,解决该问题时可以先使用代码查看工具 对网页的源文件进行查看,确认源文件中的中文信息是否能够 正确显示,若源文件中的中文显示正常则说明该问题是由浏览 器解码网页错误所导致的,若源文件中中文显示不正常则说明 该问题是由JSp后台生成网页时处理错误所导致的。 对于解码错误导致的中文乱码可以通过设置JSP中的con tentType属性为可支持中文的国标字符集即可,即 <%@page contentType=”text/html:charset=GB23 12”> 对于后台网页处理错误所导致的中文乱码可以在输出页 面前向其中添加支持中文显示的字符集,即 <meta http—equiv=”content—Type”.content=’’text/h tml:charset=GB2312”>: response.setContentType(“text/html:charset=GB231 2”) ’ (二)包含中文字符的提交数据乱码分析 中文字符填写和提交是web网页表单填写的基本功能之 一。但是在提交过程中有可能出现用户输入和显示的中文文本 正确,而后台传输错误的现象发生。解决该问题可以从以下三 方面着手。 首先,使用Post的方式进行数据提交时要注意对tpye 参数的值进行确认或修正。该提交方式会在提交前对JSP中的 contentType属性进行查询,然后根据该属性中定义的编解码 方式对提交数据进行编码,经由HTTP转发和传输后提交给后 111消费电子2013 台的服务器端,服务器端在存储前同样会对contentType属性
中的字符集关键字查询后再进行解码。
其次,使用Get的方式进行数据提交时要注意对服务器相
关屙I生进行确认或修正。目前是使用的Tomcat配置文件默认
的字符集为ISO一8859-1,该字符集是无法处理中文字符的,
为保证Get方式下的表单提交正确,需要手动修改Tomcat中
的server.xml文件,使服务器能够支持中文编解码。需要注
意的是,该修改需要重启服务器后才能生效。
再次,由request中相关数据的解码方式不当所引起的乱
码需要对request中的滤波器相关函数进行重新设置,以便于
发现问题时能够根据过滤规则对相关的数据信息进行检查或
修改。具体的,滤波器的过滤规则设置代码如下:
Public void doFiiter(ServletRequest request,Serv
letResponse respone,FilterChain chain)
Throws IOException, Serv1etException
{
If(!ignore】l(request.getcharacterEncoding()==nul
1))//该语句用于查看滤波器中的编码是否能够编译中文字
符,若不能够编译,需要对其进行设置
{String enc0ding=selectEnc0ding(request);
If(encoding!=nul 1)
request.setCharcterEncoding(encoding):}//查询字
符集关键字类型,并根据查询结果进行配置
chain.doFiIter(request,response):)
(三)Java程序与数据库之间的通信数据乱码分析
该乱码问题主要集中在使用JDBC驱动的数据库与Java
程序之间。JDBE默认的编码格式同样为ISO标准,该标准是
无法识别中文字符的。在数据输入输出之前没有进行编码转
换,就会导致乱码现象发生。其解决方式同上述乱码问题解决
方式,需要对数据库中与编码格式有关的.ini文件进行编码
修改。
三、总结
Java是当前跨平台应用所使用的主要编程语言之一,其
应用过程中出现中文乱码的根本原因在于字符编码格式不匹
配。为避免该情况的出现,一方面要尽快制定和使用统一、规
范的Java开发标准,另一方面要在Java编程时在出现数据传
输的地方做好字符编码转换相关工作。
参考文献:
【1】任平红,陈矗,郑秋梅Java中文乱码问题研究Ull计算机
技术与发展,2013,23(3).
[2]- ̄--T5g,范学峰,张志 ̄.Java编码问题研究与应用U].计
算机工程,2002,28@
[3】曹莉,赵文静Java中文处理研究卟计算机技术与发展,2
006,16(5)
【41彭利民,予J、素 ̄rjsP和Servlet网络编程设计中汉字编码
的研究『lIl计算机与现代化,2006(3).