- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅析Java编程中文问题及解决方法
浅析Java编程中文问题及解决方法 【摘 要】Java是由Sun Microsystems公司所开发的程序设计语言,至今已经有将近20年的历史,在这20年间Java取得了很大的发展并广泛应用于PC、数据中心、互联网等行业。如今随着智能手机行业的发蓬勃发展再一次带给了Java巨大的应用空间。本文对Java编程的中文问题进行了阐述,并提出了相关的解决方案。 【关键词】Java语言 中文问题 GB2312 从客观上来看每个区域计算机信息交换所采取的字符编码集都是不同的。一般情况下字符编码集都是按照长度来进行分类,主要包括了两类即单字节字符集(SBCS)以及双字节字符集(DBCS)。Java主要是使用UNICODE编码,因此当Java在实际工作的过程中就会存在一个编码格式转换输入、输出的过程,这个过程是实施信息数据交换的重要过程,一旦出现问题就会使得中文出现乱码的情况,这给用户和开发者都会带来较为不利的影响,这也是Java编程中文问题的主要体现。 一、Java主要的编码方式 如果要想解决Java编程所存在的问题首先要对Java主要的编码方式进行分析。16位无符号型数据是Java中的主要字符数据,它同时包括了ASCⅡ集以及Unicode集,这也就为程序带来了相应的标准,给开发者带来了更大便利。但是在Java处理信息数据的过程中基本上都是英文,事实上7位的ASCⅡ集已经足够使用,而采用Unicode集相对来说就占用了更大的储存空间,同时也让基于Java的软件的稳定性受到了一定程度的影响。而Java编程的中文问题主要还是因为信息数据在字符转换过程中存在错误所导致的。Java主要的编码方式包括了以下几种分别为:GB2312、Unicode、ISO8859-1、 GBK、GB1803-2000(GBKZK)以及UTF-8。其中GB2312是一种较为典型的Java编码方式,并且有着较为广泛的使用,也被大多数用户所熟知,同时它与中文编码有着密切的联系[1]。GB2312是一种双字节内码,它容纳了大量的一、二级汉字以及 9区的符号,作为最基本的中文字符集,它具有较好的兼容性并且绝大部分的软件与中文系统都能够支持该中文字符集。当然GB2312也有着一定的编码范围,低位范围是从0xal至0xfe;高位范围是0xal至0xfe;汉字的范围是从0xb0al至0xf7fe。GBK作为GB2312编码的延伸也包含了相当数量的汉字,它的编码范围是从0x8140至0xfefe,并且GBK上的字符可以与Unicode形成相应的映射,这样就使得GBK能够兼容于Java。,当前它正应用于一些系统的缺省字符集。另外GBK2K作为GBK的扩展带来了更可靠的汉字扩展方案,这也就给字位不够以及字位不足的问题带来了良好的解决方案。 二、Java编程中文问题产生的主要因素。 在Java语言编程、设计的过程中某些时候会碰到出现中文乱码的情况,而造成这种情况的主要因素还是因为不同编码之间的相互转换所存在的错误所造成的。当程序中涉及到JSP或者是Servlet时,一般情况下会通过get Parameter (String name)来对相关的参数进行访问,但是反馈的却是从网络端所得到的由字节流解码所带来的字串符[1]。而正是因为服务器不能够对这些字串符进行良好的驾驭也就使得服务器解码出现了一定程度的问题。从数据传播的流程来看(String经过encoder→ByteStream→Internet→ByteStream再经过decoder→String→Servlet),如果encoder步骤与decoder步骤能够保证高度一致的话就能够让解码更为准确,这样就不会产生中文字符出现乱码的问题。但是由于服务器作用的局限性,会使得encoder以及decoder出现偏差,这样就会让数据转换出错,从而导致乱码。举例来说在汉字当中“你”字的GB编码为0Xe4e3,其二进制编码为1100010它的Unicode码为0X4f60,其二进制编码01100000。从上述实例就可以看出GB编码与Unicode码在表达同一个中文字符的时候完全是采用了两种不同方式,同时两者之间并没有所对应的转换规律,这就直接导致了中文乱码的产生[3]。 三、Java编程中文问题的具体解决方案 Java编程中文问题的具体解决方案主要如下: (一)在jsp网页中对输出字符集进行重新定义。当前主流的浏览器都是以UTF-8编码方式来进行数据信息的传送,当中文字符不能正常显示的时候可以将初始的字符集变更为GB2312,这样就可以有效地避免乱码情况。一般是在页面开头处加入meta信息,这样就能够让页面以GB2312方式来进行相应的输出,保证中文输出的可靠性[4]
文档评论(0)