Unicode如可转成中文?

wizardblue 2005-04-18 08:47:29
比如 String un="\u4e2d\u6587";
如何把这个unicode串转成中文呢?
...全文
243 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingfish 2005-04-18
  • 打赏
  • 举报
回复
private static String unicodeToGB(String s) {
StringBuffer sb = new StringBuffer();
StringTokenizer st = new StringTokenizer(s, "\\u");
while (st.hasMoreTokens()) {
sb.append( (char) Integer.parseInt(st.nextToken(), 16));
}
return sb.toString();
}
wizardblue 2005-04-18
  • 打赏
  • 举报
回复
哦,知道了,啦,有没QQ的啊,以后有事请教哦!
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
晕,这是jdk的Properties的源代码!呵呵
wizardblue 2005-04-18
  • 打赏
  • 举报
回复
噢 ,jFresH_MaN(TM) ,就是偏移一个地址是吧,刚才你是给过我,可是我看了半天没看懂,所以就,,,,不好意思啊...呵呵,现在有点感觉了,呵呵
wizardblue 2005-04-18
  • 打赏
  • 举报
回复
晕,kingfish啊,我回去试了,一下,按你的弄法

private static String gbToUnicode(String s){
StringBuffer ss = new StringBuffer();
for(int i=0;i<s.length();++i){
ss.append("\\u"+Integer.toHexString(s.charAt(i)));
}
String temp = new String(ss);
return temp;
}
private static String unicodeToGB(String s){
StringBuffer sb = new StringBuffer();
StringTokenizer st = new StringTokenizer(s, "\\u");
while (st.hasMoreTokens()) {
sb.append(st.nextToken());
}
return sb.toString();
}
public static void main(String[] args) {
String ch="中文";
String un=gbToUnicode(ch);
String gb=unicodeToGB(un);
System.out.println(gb);

}
最后显示的是4e2d6587,而不是"中文",所以还有点问题的啊.
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
public static String loadConvert(String theString) {
char aChar;
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len);

for (int x=0; x<len; ) {
aChar = theString.charAt(x++);
if (aChar == '\\') {
aChar = theString.charAt(x++);
if (aChar == 'u') {
// Read the xxxx
int value=0;
for (int i=0; i<4; i++) {
aChar = theString.charAt(x++);
switch (aChar) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
value = (value << 4) + aChar - '0';
break;
case 'a': case 'b': case 'c':
case 'd': case 'e': case 'f':
value = (value << 4) + 10 + aChar - 'a';
break;
case 'A': case 'B': case 'C':
case 'D': case 'E': case 'F':
value = (value << 4) + 10 + aChar - 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");
}
}
outBuffer.append((char)value);
} else {
if (aChar == 't') aChar = '\t';
else if (aChar == 'r') aChar = '\r';
else if (aChar == 'n') aChar = '\n';
else if (aChar == 'f') aChar = '\f';
outBuffer.append(aChar);
}
} else
outBuffer.append(aChar);
}
return outBuffer.toString();
}
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
我想起来了
我今天给过你这个代码啊
wizardblue 2005-04-18
  • 打赏
  • 举报
回复
呵呵,谢谢楼上的,懂了,懂了,原来就这么简单的说,弄了半天!
kingfish 2005-04-18
  • 打赏
  • 举报
回复
应该是unicodeToGB
kingfish 2005-04-18
  • 打赏
  • 举报
回复

private static String gbToUnicode(String s){
StringBuffer sb = new StringBuffer();
StringTokenizer st = new StringTokenizer(s, "\\u");
while (st.hasMoreTokens()) {
sb.append(st.nextToken());
}
return sb.toString();
}
wizardblue 2005-04-18
  • 打赏
  • 举报
回复
还有三楼的,偏移量是多少啊?
wizardblue 2005-04-18
  • 打赏
  • 举报
回复
不是啊,如何实现下面的这个函数?
private static String gbToUnicode(String s);
传进去的s就是Unicode,如何得到要返回的String 呢?
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
这个String随便在哪里都是直接能显示的。
这就是避免出现中文乱码的办法
wizardblue 2005-04-18
  • 打赏
  • 举报
回复
不是啊,假如只有一个
这个中文字符串要作为String 返回的呢?
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
因为中文也可以用Unicode来表示
他表示的是在一个范围之内,具体我不记得了
只要在这个范围里面直接输出就没有问题
jFresH_MaN 2005-04-18
  • 打赏
  • 举报
回复
String un="\u4e2d\u6587";
System.out.println(un);
这样直接就输出中文了
飞行的兔子 2005-04-18
  • 打赏
  • 举报
回复
如果对字符串,转移下编码就行了!
飞行的兔子 2005-04-18
  • 打赏
  • 举报
回复
如果有大量的这种unicode字符串的话,将这些大量的unicode字符串保存到一个文件中,例如aa.txt,
然后在命令行当前目录下:native2ascii -encoding gbk aa.txt bb.txt
这样在bb.txt中你就可以看到这些unicode的中文字符了!

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧