我想java中没有名为"Unicode"的编码吧
你把"Unicode"改成"UTF-8"看看

解决方案 »

  1.   

    肯定是有的,否则会报错误信息:
    java.io.UnsupportedEncodingException
      

  2.   

    public class UnicodeTest
    {  public UnicodeTest()
      {
      }  public static String decode(String s)
      {
         StringBuffer sb = new StringBuffer();
         boolean escape = false;
         for(int i=0; i<s.length(); i++)
         {
            char c = s.charAt(i);
            switch (c)
            {
                    case '\\':
                        escape = true;
                        break;
                    case 'u':
                    case 'U':
                        if (escape)
                        {
                          try
                          {
                             sb.append((char)Integer.parseInt(
                                             s.substring(i+1,i+5),16));
                              escape = false;
                          }
                          catch (NumberFormatException e) {
                              throw new IllegalArgumentException();
                          }
                          i += 4;
                        }
                        else
                        {
                          sb.append(c);
                        }
                        break;
                    default:
                        sb.append(c);
                        break;
            }
         }     return sb.toString();
      }  public static void main(String[] args)
      {
         // 假设这个字符串是从文件中读取到的
         String s = "\\u6CA1\\u6709";     // 转换并打印
         System.out.println(decode(s));
      }}
      

  3.   

    感谢 zxhong(红透半边天),可是你所编写的 UnicodeTest.decode()方法似乎没什么用处,如果只是单纯在默认的环境中显示Unicode编码,那很容易,用不着写一个UnicodeTest类.
    只需要用:
    String s = "\u6CA1\u6709";
    System.out.println(s);
    即可.
    问题的关键是它在不同的编码环境下有不同的结果.比如:
    在Windows 2000中文简体环境下,没有问题。
    在繁体环境下,如果在选择系统地区设定将系统的语言预设值设为简体,也没有问题,可是如果将语言的语言预设值设为繁体,问题就来了,结果为"?有"。
    System.out不认识简体了,可是为什么System.out能认识"有"(\u6709)呢?可能是"有"的简体繁体在Unicode中是同一个.而"没"(\u6CA1)的简、繁体的Unicode编码不一样。
    我的Windows2000同时安装了简、繁体两种语言的字符集,没有道理改变系统的语言预设值就不认另一套字符吧,比如window自带的记事本在打开unicode编码的文件时就能很好的同时识别简体和繁体,可是System.out好象只能认识预设的字符集,是java的问题还是操作系统的问题呢?真另人困惑。
      

  4.   

    看来平台无关性是不全面的说法
    JAVA中可能没有提供自动判断字符集编码方式的能力
    应该是缺陷
    找找SUN中国公司的人问问
    呵呵
      

  5.   

    编码是基础知识,不是java的事。