小弟在用java写properties类型的文件时,插入中文会被系统自动转换成\u****的字符串,请问如何可以直接写入中文。

解决方案 »

  1.   

    据我所知,不行吧,必须使用\u****,不过你可以自己写一个elipse插件,来做properties的中文可视化的编辑界面。
      

  2.   

    Java就是必须这样保存中文到Properties中的如果保存和读取都是Java程序,这样你根本无需理会它,反正肯定能够读取正确的如果是另外程序读取,则你自己写保存方法就行了,具体就是你遍历Properties中的所有内容逐行写入文件中
      

  3.   

    我知道如何吧中文读进来,要进行一次编码转换,就是吧iso-8859-1转换成gbk的就可以了,写的还不知道
      

  4.   

    resource budle是不是没有直接写入properties文件的方法,自己用文件流往里写????
      

  5.   

    我在写xml问题时也出现过这样的写不进去 写进去就自动修改 我查了很久发现 是MS的编码问题不知道你说的是不是也是这样的问题
      

  6.   

    直接文件流逐行存文件,而不是使用Properties 的默认存方式。这样就可以了。
      

  7.   

    new String("中文".getBytes("ISO8859_1"), "GBK")
      

  8.   

    我也遇到过个问题,我就不使用Properties自带的保存功能,自己使用FileWriter写就ok了
      

  9.   

    你的properties文件,保存的时侯它会以操作系统默认的编码方式保存的,或者是某些编辑器默认的编码方式保存的,所以你在程序里面读取文件的时侯,要进行相应的编码转换,比如你用fileinputstream读取的时侯要指定读取流的编码方式为文件的编码方式。如果编码方式不是gb2312,你可以读取以后再转换编码为gb2312。首先有一点儿,你必须知道properties文件的编码方式!
      

  10.   

    建议你用xml做配置文件,properties作配置文件是过时的作法,用xml可以指定编码方式,而且读取也不困难。
      

  11.   

    这个问题我是这样解决的,从java.util.Properties继承一个自己的Properties类,把java.util.Properties源代码的saveConvert拿出来,将下面所示中文转换的代码注释掉即可。转换代码:
    if ((aChar < 0x0020) || (aChar > 0x007e)) {
        outBuffer.append('\\');
        outBuffer.append('u');
        outBuffer.append(toHex((aChar >> 12) & 0xF));
        outBuffer.append(toHex((aChar >>  8) & 0xF));
        outBuffer.append(toHex((aChar >>  4) & 0xF));
        outBuffer.append(toHex( aChar        & 0xF));
    } else {
        if (specialSaveChars.indexOf(aChar) != -1)
            outBuffer.append('\\');
        outBuffer.append(aChar);
    }
      

  12.   

    其实使用Java本身带的都没有什么问题啦,只要你自己看着不爽。我一般都是留着一份原来中文字符的然后使用的时候才native2ascii转换一下,不是太必要自己写一个
      

  13.   

    回 yangqu(曲洋) 我哪里是团长,分明是小兵。
    大家的回复,我在试验,等完了之后,就散分。
    谢谢啦,缘分啊!
      

  14.   

    你用记事本去写中文在里面存储为.prperties文件, 你看看中文会不会显示? 当然会,但是你转到jsp 叶面里面你试一下,乱码,实际上,插入中文会被系统自动转换成\u****的字符串,这多数是UTF-8的编码,在你用resource budle 获得了这个文件,读取时,是按某个字符集来读取的,除非你自定义。 所以就算你自己写了一个文件,含中文,然后你也必须利用工具转化,我记得在jdk/bin里有个  native2ascii.exe ,他就是可以转换用的。
      

  15.   

    在读取配置文件的时候,如果是中文的,那么可以把它进行一下转换,
    String username = new String("我是中国人".getBytes("ISO8859_1"), "GBK")
      

  16.   

    其实这个问题就不是问题
    中文保存成\u****其实就是其Unicode,java默认就是Unicode编码的
    正如上面 vtable9999(肝肝肝肝) 所说,properties类里面的saveConvert会先判断这个字符是否是中文,如果是就会转换成\u****的标准unicode形式.其实这样的形式对于我们使用中文是没有影响的,你读取出来打印一样会是正确的中文显示
    如果需要看到这个文件的中文显示,你可以使用native2ascii转换过来
    不过我个人认为这个是没有必要的.
      

  17.   

    恩,我和ChDw(米) 的方法一样,保留一个中文的,在部署的时候用native2ascii转换一下,这样读取的时候就不存在乱码问题,而且就直接读取就可以了,也不用考虑转码问题
      

  18.   

    一般我作得項目中也是用ChDw(米) 的方法的