我从网上找到一段转unicode的程序,如下
private String convert(String str) {
String tmp;
StringBuffer sb = new StringBuffer(1000);
char c;
int i, j;
sb.setLength(0);
for (i = 0; i < str.length(); i++) {
c = str.charAt(i);
if (c > 255) {
sb.append("\\u");
j = (c >>> 8);
tmp = Integer.toHexString(j);
if (tmp.length() == 1)
sb.append("0");
sb.append(tmp);
j = (c & 0xFF);
tmp = Integer.toHexString(j);
if (tmp.length() == 1)
sb.append("0");
sb.append(tmp);
} else {
sb.append(c);
}
}
return (new String(sb));
}另外在main函数中调用该method,
String china = convert("中国");
System.out.println(china);
控制台中得到的信息是\u4e2d\u56fd
我又添加了如下代码
String mychina= "\u4e2d\u56fd";
System.out.println(mychina);
为什么控制台得到的信息时“中国”?
如果我想将conver方法打印出来的信息也是“中国”,我该如何处理?
private String convert(String str) {
String tmp;
StringBuffer sb = new StringBuffer(1000);
char c;
int i, j;
sb.setLength(0);
for (i = 0; i < str.length(); i++) {
c = str.charAt(i);
if (c > 255) {
sb.append("\\u");
j = (c >>> 8);
tmp = Integer.toHexString(j);
if (tmp.length() == 1)
sb.append("0");
sb.append(tmp);
j = (c & 0xFF);
tmp = Integer.toHexString(j);
if (tmp.length() == 1)
sb.append("0");
sb.append(tmp);
} else {
sb.append(c);
}
}
return (new String(sb));
}另外在main函数中调用该method,
String china = convert("中国");
System.out.println(china);
控制台中得到的信息是\u4e2d\u56fd
我又添加了如下代码
String mychina= "\u4e2d\u56fd";
System.out.println(mychina);
为什么控制台得到的信息时“中国”?
如果我想将conver方法打印出来的信息也是“中国”,我该如何处理?
解决方案 »
- 怎么样才能调用第二个构造方法呢?为什么会发生数组越界呢?
- 要求用C++,用java就是不行
- String s = new String("a")创建了几个String Object?
- 欢迎各位喜欢SWT的朋友来谈谈自己使用SWT的一些感受和心得
- 给出applet警告
- 急急急急急!!!
- 关于java2的两个问题
- 取系统时间和String转换成date型的奇怪问题。。。真得很奇怪阿。。。
- 我用java编写的微型http服务器,欢迎大家试用,并交流源代码
- 在实体bean的<sql clause>中,这一句where favour like %?%是否正确? 正却的是怎么写?
- 实现sum函数
- 是这样的,呵呵
后面输出的\u4e2d\u56fd 表示的两个字符
StringBuffer sb = new StringBuffer(1000);
char c = 0;
for (int i = 0; i < str.length(); i++) {
c = str.charAt(i);
if ('\\' == c && 'u' == str.charAt(i + 1) && str.length() > i + 5) {
sb.append((char) ((Integer.parseInt(
str.substring(i + 2, i + 4), 16) << 8) + Integer
.parseInt(str.substring(i + 4, i + 6), 16)));
i = i + 5;
} else {
sb.append(c);
} } return sb.toString();
}能转大部分吧,但是
String china = convert("a中a国\\u1234");
System.out.println(china);
System.out.println(deConvert(china));
这样的\u1234就完蛋了,原因与那个convert方法有关。