分享

\u5317\u4eac\u5e02 如何转换成中文[北京市]

 CevenCheng 2012-04-28
问个java字符编码的问题,中文字符用utf8编码,我直接System.out.println("\u5e7f\u5dde\u5e02\u5317\u4eac\u8def39\u53f7")能够在控制台上打印正出中文来,但是如果\u5e7f\u5dde\u5e02\u5317\u4eac\u8def39\u53f7在文件中,从文件中读出来再在控制台输出,则输出的还是\u5e7f\u5dde\u5e02\u5317\u4eac\u8def39\u53f7,若要从文件中读出的时候也能够正确显示其代表的中文字符,该如何处理?

引用楼主 javacjavacjavac 的帖子:
问个java字符编码的问题,中文字符用utf8编码,我直接System.out.println("\u5e7f\u5dde\u5e02\u5317\u4eac\u8def39\u53f7")能够在控制台上打印正出中文来,但是如果\u5e7f\u5dde\u5e02\u5317\u4eac\u8def39\u53f7在文件中,从文件中读出来再在控制台输出,则输出的还是\u5e7f\u5dde\u5e02\u5317\u4eac\u8def39\u53f7,若要从文件中读出的时候也能够正确显示其代表的中文字符,该如何处理?

答:当在程序中的字符串"\u5e7f\u5dde\u5e02\u5317\u4eac\u8def39\u53f7"表示时,\u5e7f其实在机器内部是一个UNICODE值(不是由这6个字符组成的串)。而文本文件中的\u5e7f\u5dde\u5e02\u5317\u4eac\u8def39\u53f7,其\u5e7f就不是一个UNICODE值,而是由这6个字符组成的串。因此需要转换。
转换的方法代码参考如下:
Java code
public static String convert(String utfString) { StringBuilder sb = new StringBuilder(); int i=-1; int pos=0; while((i=utfString.indexOf("\\u",pos))!=-1) { sb.append(utfString.substring(pos,i)); if(i+5<utfString.length()) { pos=i+6; sb.append((char)Integer.parseInt(utfString.substring(i+2,i+6),16)); }//if }//while return sb.toString(); }

用该方法测试的结果如下:
若:文本文件中的串是:ab\u5e7fdd\u5ddeew\u5e02qq\u531721\u4eac\u8def39\u53f7
则:结果是:ab广dd州ew市qq北21京路39号

以上仅供你参考

==============
面少打了一句话。

而如果写在了文件里,那在读的时候,\ 会自动转换为\\  
也就是,实际读取出来的是:  

Java code
\\u5e7f\\u5dde\\u5e02\\u5317\\u4eac\\u8def39\\u53f7



所以输出的时候,看到的是文件里保存的字符串,  

而不是
Java code
"广州市北京路39号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多