以下代码:
String str1="\\u";
String str2="5B66" ;
str2=str1.concat(str2);
得到的输出为:\u5B66
如果我想输出 \u5B66对应的unicode编码: "学"!
应该对str2做怎样的处理??
为什么Java没有对连接起来的字符做第2次转义处理呢??
我google了一下说可以通过正则表达式来处理这里的str2!
那么应该具体怎么编码呢?请高手指教。谢谢。

解决方案 »

  1.   

    我先验证了一下5B66是学。不错。所谓能不能输出,要看你的Render,比如Console或者Swing界面的CodePage。
    一般来讲中文是936的。你要转码给它输出。
      

  2.   

    楼上能说具体一点吗?具体怎么char[]?
      

  3.   

    System.out.println((char)(Integer.parseInt("\\u5B66".substring(2),16)));将字符串"\\u5B66",除掉表示16进制的前缀表示"\\u"
    然后按16进制,转成Integer,再转成char
    就可以了,测试输出:
    学如果参考你上面的,就不要再添加前缀,直接将"5B66"按16进制转int,再转char,就可以了
      

  4.   

    String b = "\\u5B66".substring(2);
    int a = Integer.parseInt("\\u5B66".substring(2), 16);


    byte[] c = new byte[2];
    c[0] = (byte) ((a & 0xff00) >> 8);
    c[1] = (byte) (a & 0x00ff);
    String c1 = null;
    try {
    c1 = new String(c, "UTF16");
    } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.out.println(c1);我很忙,我不想写code。