问个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个字符组成的串。因此需要转换。 转换的方法代码参考如下:
用该方法测试的结果如下: 若:文本文件中的串是:ab\u5e7fdd\u5ddeew\u5e02qq\u531721\u4eac\u8def39\u53f7 则:结果是:ab广dd州ew市qq北21京路39号 以上仅供你参考 ============== 面少打了一句话。
而如果写在了文件里,那在读的时候,\ 会自动转换为\\ 也就是,实际读取出来的是:
所以输出的时候,看到的是文件里保存的字符串, 而不是
|
|
来自: CevenCheng > 《错误笔记&&问题手册》