<b>Java编程技术中汉字问题的解析及办理</b>[Java编程]
本文“<b>Java编程技术中汉字问题的解析及办理</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在基于Java语言的编程中,我们常常碰到汉字的处理及显示的问题.一大堆看不懂的乱码必定不是我们乐意看到的显示效果,怎样才可以让那些汉字精确显示呢?Java语言默许的编码方法是UNICODE,而我们中国人普通利用的文件和数据库都是基于GB2312大概BIG5等方法编码的,怎样才可以恰本地挑选汉字编码方法并精确地处理汉字的编码呢?本文将从汉字编码的常识动手,结合Java编程实例,解析以上两个问题并提出办理它们的筹划.
目前Java编程语言已经遍及利用于互联网世界,早在Sun公司开辟Java语言的时刻,就已经考虑到对非英文字符的支持了.Sun公司公布的Java运行环境(JRE)本身就分英文版和国际版,但只有国际版才支持非英文字符.不过在Java编程语言的利用中,对中文字符的支持并非好像 Java Soft的尺度标准中所声称的那样完善,因为中文字符集不只一个,并且差别的操作系统对中文字符的支持也不尽相同,所以会有很多和汉字编码处理有关的问题在我们举行利用开辟中困扰着我们.有很多关于这些问题的解答,但都对比琐碎,并不可以满意大家急迫办理问题的希望,关于Java中文问题的系统研究并不多,本文从汉字编码常识动身,解析 Java中文问题,但愿对大家办理这个问题有所帮忙.
汉字编码的常识
我们知道,英文字符普通是以一个字节来表示的,最常用的编码办法是ASCII .但一个字节最多只能辨别256个字符,而汉字不计其数,所以目前都以双字节来表示汉字,为了可以与英文字符脱离,每个字节的最高位一定为1,这样双字节最多可以表示64K格字符.我们常常碰到的编码方法有 GB2312、BIG5、UNICODE 等.关于具体编码方法的具体资料,有爱好的读者可以查阅相关资料.我菲薄谈一下和我们关系密切的GB2312 和 UNICODE.GB2312 码,中华人民共和国国家尺度汉字信息交换用编码,是一个由中华人民共和国国家尺度总局公布的关于简化汉字的编码,通行于中国大陆区域及新加坡,简称国标码.两个字节中,第一个字节(高字节)的值为区号值加32(20H),第二个字节(低字节)的值为位号值加32(20H),用这两个值来表示一个汉字的编码.UNICODE 码是微软提出的办理多国字符问题的多字节等长编码,它对英文字符采纳前面加“0”字节的战略实现等长兼容.如 “A”的ASCII 码为0x41,UNICODE 就为0x00,0x41.操纵特别的工具各种编码之间可以彼此转换.
Java中文问题的初步熟习
我们基于Java编程语言举行利用开辟时,不可避免地要处理中文.Java编程语言默许的编码方法是UNICODE,而我们普通利用的数据库及文件都是基于GB2312编码的,我们常常碰到这样的情形:浏览基于JSP 技术的网站看到的是乱码,文件翻开后看到的也是乱码,被 Java 改正过的数据库的内容在别的场所利用时无法持续精确地供应信息.
String sEnglish = “apple”;
String sChinese = “苹果”;
String s = “苹果apple ”;
sEnglish的长度是5,sChinese的长度是4,而s默许的长度是14.关于sEnglish来说,Java中的各个类都支持得非常好,必定可以精确显示.但关于sChinese 和 s 来说,固然 Java Soft 声明 Java的基本类已经考虑到对多国字符的支持(默许 UNICODE编码),但是假如操作系统的默许编码不是UNICODE ,而是国标码等.从 Java 源代码到得到精确的后果,要经过 “Java 源代码-> Java 字节码-> ;虚拟机->操作系统->显示设备”的历程.在上述历程中的每一步骤,我们都必须精确地处理汉字的编码,才可以使终究的显示后果精确.
“ Java 源代码-> Java 字节码”,尺度的Java编译器javac 利用的字符集是系统默许的字符集,比方在中文Windows操作系统上就是GBK ,而在Linux操作系统上就是ISO-8859-1,所以大家会发目前Linux操作系统上编译的类中源文件中的中文字符都出了问题,办理的办法就是在编译的时刻增添 encoding 参数,这样才可以与平台无关.用法是
javac ?Cencoding GBK.
“ Java 字节码->虚拟机->操作系统”,Java运行环境(JRE)分英文版和国际版,但只有国际版才支持非英文字符.Java开辟工具包 (JDK) 必定支持多国字符,但并非全部的计算机用户都安装了 JDK .很多操作系统及利用软件为了可以更好的支持 Java ,都内嵌了 JRE的国际版本,为自己支持多国字符供应了便利.
“操作系统->显示设备”,关于汉字来说,操作系统必须支持并可以显示它.英文操作系统假如不搭配特别的利用软件的话,是必定不可以显示中文的.
还有一个问题,就是在Java编程历程中,对中文字符举行精确的编码转换.比方,向网页输出中文字符串的时刻,不管你是用
out.println(string);还是用
<%=string%>,都必须作 UNICODE 到 GBK的转换,大概手动,大概自动.在JSP 1.0中,可以定义输出字符集,从而实现内码的自动转换.用法是
<%@page contentType=”text/html;charset=gb2312” %>
但是在一些 JSP 版本中并没有供应对输出字符集的支持,(比方 JSP 0.92),这就需求手动编码输出了,办法非常多.最常用的办法是
String s1 = request.getParameter(“keyword”);
String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);
以上是“<b>Java编程技术中汉字问题的解析及办理</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |