3G培训

移动通讯

职业规划

课程体系

在线报名
浅谈JAVA 语言中的unicode

    请先看一段代码:
      
 
    看完这段代码后,您的第一感受是什么?

    “新手写的程序!大错特错!”

    的确,这是一个刚刚开始学习JAVA语言的同学编的。他不太理解得出的结果,找到我想寻求帮助,我的第一个反应是:”为什么日食不报错?”然后,静下心来分析了一下,我恍然大悟,里面竟蕴藏着一个我们不太注意的概念,UNICODE。

    好!现在就让我来解释一下。

    我想如果您是一个编成的老手肯定不会出这样的错误,但是,如果让您立刻反应出上面程序的输出结果,也不是件容易的事。想看看结果吗?好!

   

    我敢说,很出乎您的意料吧。

    在这里,我顺便说说,学习编程时的心态。我们不要只关心输出结果的对错,更重要的是过程,每个环节都清楚了,结果自然是我们想得到的,如果,结果出和你的想法不一样,别急,静下心来分析,一定要很好的记录下出错的信息。这样我们才可以顺藤摸瓜,找到错误的缔结。
 
    可以这么说,错误和正确比,错误能够给你带来更大收获。所以,我们不要放过每一个错误,因为,这正是提升你的好机会。

    还有,应该做到错误共享,可以借助QQ群来sharing 一下你的错误,这样做,第一可以更好的加深自己的印象,第二可以让别的同学不要走同样的弯路。

    好了,回到正题(unicode)上来吧。

    不知道您想过没有,在我们做System.out.println()时,如果,字符串定义为一串中文的时候,系统不会报错,甚至能够清楚地打印出中文来,这是什么原因呢?

    正是由于JAVA核心的字符是基于UNICODE的,这一机制为应用提供了对中文”字”的控制(而不是字节)。如果,您从网上google一下可以找到很多unicode的内容,这里我只是想用实例来说说,unicode的概念和用途。

    首先,我们知道,char型是以2个字节来存储的。也就是在内存中,占用了16位,他所能表示的最大的数是65535。也就是(2的16次幂)。

    于是我设计了这么个程序。

   
 
    目的就是想看看,前128个字符(也就是ASCII码)的输出情况。看看结果。

   
 
    让我们再借助其他软件来比较一下。(DotFont16X16)
   
 
    完全相同。

    还是简单的说说,UNICODE概念吧。通过实例概念更容易理解和掌握。

    Unicode是一种兼容ASCII字符并在多种程序种被支持的字符集。它的最先的128个Unicode字符对应着ASCII字符并且具有相同的byte值。Unicode字符U+0020到U+007e同ASCII自渎0x20和0x7e是等价的。但是不同于ASCII,因为支持拉丁字并使用了7-bit字符集,Unicode使用了一个16-bit的值来表示每个字符。

    好了,我们知道UNICODE使用16-bit的值来表示每个字符。让我们看看最初关于”男”和”女”的问题吧。
   
 
    结果是这样的。
   
         PIC1.1

         
          PIC1.2

    我们终于找到”男(PIC1.2的最后一行的正数第八个)”和”女(PIC1.1的第一行正数第四个)”。相信,不用多说您也恍然大悟了吧,如果,还有些不明白的地方可以GOOGLE一下,也会豁然开朗的。

    那么JAVA这么做后的作用是什么呢?相信,经常上网的人,或者浏览过日文网站的人,肯定能够说的出。这么一来,JAVA的Web就支持了多种语言,包括美国,欧洲,中东,非洲,印度,亚洲和太平洋地区地语言。那么也就是说:一个256个数的字符集,就对应一种语言。或者,你可以把UNICODE想象成这样:让所有的字符(包括英文)都用2个字节(2个8位)表示,这样就有了一个2^(8*2) = 256 * 256 = 65536个格子的大棋盘。在这个棋盘中,这样中(简繁)日韩(还包括越南)文字作为一个字符集都放在一定的区位内,为了减少重复,各种语言中写法一样的字共享一个“棋格”。

    好了,就说这么多吧,google是我们的24*365&free的老师。这里特别感谢,阿卡吧同学的支持。

咨询电话
800-810-9530
010-51659393
在线QQ咨询在线QQ咨询
新闻列表