我是个java初学者
对于编码这部分不了解,我有几个问题,请大家帮我解答一下:
(1)java运行环境中的默认编码是操作系统中的默认编码吗?
(2)GBK是用几个字节表示一个汉字,Unicode又是用几个字节表示一个汉字和一个英文字母,是大多数教材
上很网上说的两个吗?用没有用三个或四个字节表示一个汉字的情况。
(3)String str=new String("字符编码");
     byte[] bytes = str.getBytes();
     System.out.println(bytes.length);
    这个输出的bytes.length是什么数量?是字节数吗?
(4)Unicode中的4e10,4e70
U+  0   1  2  3  4  5  6  7  8  9  A  B  C  D  E  F   ----------------------------------------------------- 4e00 一 丁 丂 七 丄 丅之类的是什么意思啊?
比如说我想把汉字转化成星星,月亮之类的符号怎么转换,最好帮我写几行主要的代码
谢谢了

解决方案 »

  1.   

    bytes.length  是给[] bytes 分配空间的大小
      

  2.   

    LZ要求不低哟
    1、否
    2、GB和GBK一样,后者是前者的扩充吧,“是大多数教材上很网上说的两个”应该是这样吧,三个或四个字节表示一个汉字的情况,可能得用到UTF-16或更高的编码
    3、byte[] bytes = str.getBytes(); 其中getBytes()是获取字符串的字节数组,所以bytes.length是获取数组长度,也就是字节数
    4、❤、☆????
      

  3.   

    呵呵,有个结束java编码的文章,看的还蛮清楚,希望对LZ有用
    http://hi.baidu.com/guoerguoerguoer/blog/item/79480208703d182d6b60fba5.html
      

  4.   

    1、java明确规定,运行时 内存中是以Unicode表示字符的。
    2、GBK用2个字节表示汉字,可查查 多字节编码(多字节字符等等)。
       Unicode是一堆规范的统称,包含UCS2 UCS-4 UTF-8 等等,
       一般所讲的Unicode是指UCS2,2个字节表示一个字符。
       UCS4用4个字节表示一个字符,UTF-8则用1-3个字节。
    3、不带参数的getBytes(),是将字符以系统当前所用的编码表示,
       得到的是一堆字节。按系统当前的编码方式解释这堆字节会得到原来的字符(串)。
       byte[].length当然是字节的个数了。
    4、……