真正的菜鸟,下面的小段程序在cmd下JDK1.5编译后执行,Unicode字符\u2122输出为乱码,计算长度也不像想象的一样,为什么?怎么改?请高手给一段不会乱码的程序,我是真正的菜鸟,估计提示一下都没有用,谢谢!
import java.util.*;public class UnicodeCode {
public static void main(String args[]) {
String str="中文Java\u2122"; //\u2122输出为?

System.out.println(str);
System.out.println("length="+str.length()); //结果length=7,似应为8,\u2122应该是2个代码单元吧?
System.out.println("count="+str.codePointCount(0,str.length())); //结果codePoint=7
}
}

解决方案 »

  1.   

    \u2122不知道是什么,估计本来就是乱码
    你输入:中文Java\u516c\u53f8\u9996\u9875试试java中String的length不是按照字节来的,而是按照字来的,单字节的长度算一,双字节,三字节的也算一
      

  2.   

    好像不是这么回事吧?JDK5 以后.length是代码单元数?\u2122是TM。我忽然想起,它Unicode序号低于U+FFFF,确实是一个代码单元,先前是我自己想错了。
      

  3.   

    ?你的u516c\u53f8\u9996\u9875可以啊,是“公司首页”。我这OS是WindowsXP中文版
      

  4.   

    我好像明白了:操作系统不能处理Unicode字符集!