我从properties文件中取出的字符串,通过分割的到结果如下,“\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838”
,然后用System.out.print打印出来,是原样输出。而我直接用 
new String ("\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838")手动写死的,然后打印出来的直接是中文。不知道是何原因

解决方案 »

  1.   

    System.out.print();原样输出,类似于直接引用内存地址的值new String()的时候是生成一个String类型的对象。比如:String a = "中国"; 中国二个字计算机是不认识的,但是它他把这两个字进行ASII编码以后,以“\u9001”的格式对汉字进行存储。在输出String类型对象之前计算机会进行转换的再举个例子:比如每个字母对应的asii码值,相同的道理
      

  2.   

    :)
    System.out.print(new String(your properties))
      

  3.   


    那为何我从新new String(分割的结果) 还是原样输出呢。有什么解决办法呢?
      

  4.   

    File file = new File("d:\\123.txt");
    路径要用\转义\对吧。如果你的路径是写在文件里
    文件里这样写d:\123.txt
    代码是不是直接File file = new File(从文件读出的path);
    是不是就可以了。
    同样的
    你在properties里读出的
    \u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838
    读出来后\被转义了,实际上在代码里成了\\u9001\\u76d1\\u5bdf\\u5904\\u9886\\u5bfc\\u5ba1
    所以原样打出了。
    你直接写死的\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838当然认为是unicode编码的会转换为汉字输出了。
      

  5.   

    String str = new String("\u9001\u76d1\u5bdf\u5904\u9886\u5bfc\u5ba1\u6838".getBytes());
    System.out.println(str);输出为:送监察处领导审核
    我的控制台使用了UTF-8编码。
      

  6.   

    回楼上,我读到String中时,内容已经变成“\\u9001\\u76d1\\u5bdf\\u5904\\u9886\\u5bfc\\u5ba1\\u6838”了。
      

  7.   


    哦,不好意思没看清前面:),你直接用
    String str = new String("读出来的properties里面的值".getBytes(),"UTF-8");
    试试吧
      

  8.   

    是转义的问题。
    你手输的\u告诉java,后面是一个编码。也就是说,\u被理解成一个转义字符。
    而从文件读的话,\u被理解成\\u(注意,是两个字符\+u)。所以当然是原样的。
    找出\u这个转义符的asc码,然后将字符串中的\u(两个字符)替换掉。
      

  9.   

    native2ascii -encoding GBK D:\src\resources.properties D:\classes\resources.properties 
      

  10.   

    这个方案不行,我是通过WebService获取文件内容,然后传到另一个应用程序中。
      

  11.   

    请问你用什么方法读的property,可以换个方法试试
      

  12.   

    public static void main(String[] arg) throws UnsupportedEncodingException{
    // 这里是从属性文件中读出的字符串
    String[] str = "\\u9001\\u76d1\\u5bdf\\u5904\\u9886\\u5bfc\\u5ba1\\u6838".split("\\\\u");
    int[] arr = new int[str.length];
    for(int i = 1; i< str.length;i++){
    arr[i] = Integer.parseInt(str[i], 16);
    }
    System.out.println(new String(arr, 1, arr.length - 1));
    }
      

  13.   

    你的分割是自己读的properties文件,不是用Properties对象load的吧
    你自己读的时候,readLine()出来,java给你的实际上是"\\u9001\\u76d1\\u5bdf\\u5904\\u9886\\u5bfc\\u5ba1\\u6838",当然会原样输出了
    你自己测试print的时候,是写死的unicode,当然会自动帮你转成中文了啊如果还是确定要自己readLine(),建议你去看看Properties的load方法,看一下它怎么处理的,然后你把分割之后的字符串再按同样的方式处理一下就行了
      

  14.   

    使用了JSON的包。
    String tempValue = new JSONTokener("'" + split2[1] + "'").nextValue().toString();
    即使转义后还是能够直接输出中文。忒强大了。
    参考处:http://blog.chenlb.com/2009/07/java-unicode-to-chinese.html
      

  15.   

    就为转一个字符串还把JSON库给弄过来如果项目本身就有用还好说,
    要不然还不如你自己写个转换方法。