编码问题

hubert_bubert 2009-11-30 03:39:39
从前台获得这样一个字符串 Aty_cnp_%u5904%u7406%u4E2D 我进行如下处理想把它转为中文
String temp = "Aty_cnp_%u5904%u7406%u4E2D";
String s = temp.substring(temp.indexOf("%")).replace("%", "\\");
System.out.println(s);
System.out.println("\u5904\u7406\u4E2D");
运行结果:
\u5904\u7406\u4E2D
处理中
为什么这一条打印语句不输出中文?
...全文
156 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hubert_bubert 2009-11-30
  • 打赏
  • 举报
回复
问题已解决,非常感谢!
justinavril 2009-11-30
  • 打赏
  • 举报
回复
先弄成字符再说吧!
String temp = "%u5904%u7406%u4E2D";

String[] str = temp.split("%u");
String s1 = "";
for(int i=1; i<str.length; i++){
s1 = s1+(char)Integer.parseInt(str[i],16);
}
System.out.println(s1);
stan001140 2009-11-30
  • 打赏
  • 举报
回复
按错了,其中s.toString()是不必要的,
stan001140 2009-11-30
  • 打赏
  • 举报
回复
你的java基础比较差了点。
s的值是"\\\\u5904\\\\u7406\\\\u4E2D",你断点时鼠标移过去看值就知道。
打印的结果当然是"\\u5904\\u7406\\u4E2D",其中"\\"是转义后的"\"
而"\u5904\u7406\u4E2D"的值是中文,因为\u是转义后面带四个十六进制的,所以值为中文

你试一下下面的程序就知道都是打印中文
String temp = "Aty_cnp_%5904";
String s = temp.substring(temp.indexOf("%")).replace("%5904", "\u5904");
System.out.println(s.toString());
System.out.println("\u5904");
hubert_bubert 2009-11-30
  • 打赏
  • 举报
回复
测试发现s.equals("\\u5904\\u7406\\u4E2D")为true

62,621

社区成员

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

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