日期:2014-05-20  浏览次数:20803 次

新手求助,关于String的问题!高手指教。

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

请高手指教。谢谢。


------解决方案--------------------
我先验证了一下5B66是学。不错。

所谓能不能输出,要看你的Render,比如Console或者Swing界面的CodePage。
一般来讲中文是936的。你要转码给它输出。

------解决方案--------------------
楼上的,搂主是问你 "\\u5B66 "这个字怎么输出,你会输出的话就写个例子,不会的话表胡吹。

哦也想知道java用什么办法输出,帮顶一个



------解决方案--------------------
System.out.println((char)(Integer.parseInt( "\\u5B66 ".substring(2),16)));

将字符串 "\\u5B66 ",除掉表示16进制的前缀表示 "\\u "
然后按16进制,转成Integer,再转成char
就可以了,测试输出:


如果参考你上面的,就不要再添加前缀,直接将 "5B66 "按16进制转int,再转char,就可以了
------解决方案--------------------
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。