|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
首先第一点:jsp,servlet,javabean这些最基本的,嘿嘿,就算你是高手的话,在大行的企业级应用的话还是需要框架的,一个好的框架确实能构解决许多问题。
在基于Java言语的编程中,我们常常碰着汉字的处置及显现的成绩。一年夜堆看不懂的乱码一定不是我们乐意看到的显现效果,如何才干够让那些汉字准确显现呢?Java言语默许的编码体例是UNICODE,而我们中国人一般利用的文件和数据库都是基于GB2312大概BIG5等体例编码的,如何才干够得当地选择汉字编码体例并准确地处置汉字的编码呢?本文将从汉字编码的知识动手,分离Java编程实例,剖析以上两个成绩并提出办理它们的计划。
如今Java编程言语已普遍使用于互联网天下,早在Sun公司开辟Java言语的时分,就已思索到对非英笔墨符的撑持了。Sun公司发布的Java运转情况(JRE)自己就分英文版和国际版,但只要国际版才撑持非英笔墨符。不外在Java编程言语的使用中,对中笔墨符的撑持并不是好像JavaSoft的尺度标准中所传播鼓吹的那样完善,由于中笔墨符集不但一个,并且分歧的操纵体系对中笔墨符的撑持也不尽不异,以是会有很多和汉字编码处置有关的成绩在我们举行使用开辟中困扰着我们。有良多关于这些成绩的解答,但都对照噜苏,其实不可以满意人人急切办理成绩的希望,关于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修正过的数据库的内容在其余场所使用时没法持续准确地供应信息。
StringsEnglish=“apple”;
StringsChinese=“苹果”;
Strings=“苹果apple”;
sEnglish的长度是5,sChinese的长度是4,而s默许的长度是14。关于sEnglish来讲,Java中的各个类都撑持得十分好,一定可以准确显现。但关于sChinese和s来讲,固然JavaSoft声明Java的基础类已思索到对多国字符的撑持(默许UNICODE编码),可是假如操纵体系的默许编码不是UNICODE,而是国标码等。从Java源代码到失掉准确的了局,要经由“Java源代码->Java字节码->;假造机->操纵体系->显现设备”的历程。在上述过程当中的每步骤,我们都必需准确地处置汉字的编码,才干够使终极的显现了局准确。
“Java源代码->Java字节码”,尺度的Java编译器javac利用的字符集是体系默许的字符集,好比在中文Windows操纵体系上就是GBK,而在Linux操纵体系上就是ISO-8859-1,以是人人会发明在Linux操纵体系上编译的类中源文件中的中笔墨符都出了成绩,办理的举措就是在编译的时分增加encoding参数,如许才干够与平台有关。用法是
javac?CencodingGBK。
“Java字节码->假造机->操纵体系”,Java运转情况(JRE)分英文版和国际版,但只要国际版才撑持非英笔墨符。Java开辟工具包(JDK)一定撑持多国字符,但并不是一切的盘算机用户都安装了JDK。良多操纵体系及使用软件为了可以更好的撑持Java,都内嵌了JRE的国际版本,为本人撑持多国字符供应了便利。
“操纵体系->显现设备”,关于汉字来讲,操纵体系必需撑持并可以显现它。英文操纵体系假如不搭配特别的使用软件的话,是一定不克不及够显现中文的。
另有一个成绩,就是在Java编程过程当中,对中笔墨符举行准确的编码转换。比方,向网页输入中笔墨符串的时分,不管你是用
out.println(string);仍是用
<%=string%>,都必需作UNICODE到GBK的转换,大概手动,大概主动。在JSP1.0中,能够界说输入字符集,从而完成内码的主动转换。用法是
<%@pagecontentType=”text/html;charset=gb2312”%>
可是在一些JSP版本中并没有供应对输入字符集的撑持,(比方JSP0.92),这就必要手动编码输入了,办法十分多。最经常使用的办法是
Strings1=request.getParameter(“keyword”);
Strings2=newString(s1.getBytes(“ISO-8859-1”),”GBK”);
<p>
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net网页编程里有这些工具吗?要简单多少?。 |
|