Properties prop = new Properties();
    prop.load(new FileInputStresm(new File(getClass().getResource("1.cfg").toURI().getPath())));
    文件1.cfg中的有name = 铁拐李
    然后String name = prop.getProperty("name");得出的name是乱码
    于是我就 name = new String(name.getBytes("ISO8859-1"), "GBK"); 得到就是正确的 “铁拐李”
    
    但是我通过prop.setProperty("name", "文章");来改变配置文件中name的值后,
    1.cfg中name的值出现的是乱码,再用上面的方法读取name的值也是乱码,这个问题该怎么解决啊?
       PS:我的问题归结起来就是怎么样才能使我可以直接打开1.cfg文件修改name的值,也可以通过程序
        读取1.cfg中name的值,也可以通过程序修改name的值,
        当然,我所说的这个修改的值都是中文,都不出现乱码啊?

解决方案 »

  1.   

    写在properties文件中的中文要使用native2ascii.exe(位于jdk的bin目录下)进行转换成ascii编码
    如:
    C:/.....>native2ascii
    铁拐李
    \u94c1\u62d0\u674e
      

  2.   

    properties中文要用native2ascii.exe  工具转换成unicode编码
    直接双击native2ascii.exe  写上需要转换的中文  回车  得到相应编码  把编码粘到properties文件中就行了
    当然也可以 整个文件转化
      

  3.   

    除了这个方法,还有没有别的方法,比如说我直接写“铁拐李”在1.cfg中,然后在代码里面做文章 得到我想要的结果啊?
      

  4.   


    除了这个方法,还有没有别的方法,比如说我直接写“铁拐李”在1.cfg中,然后在代码里面做文章 得到我想要的结果啊?
      

  5.   

    你可以看看properties中的read方法,里面有对编解码的处理,屏蔽掉后,就可以直接在properties文件中输入中文了,不过这样并不符合国际化的要求。
      

  6.   

    按理不会乱码啊,试试这个,等你结果:Properties prop = new Properties();

    File file = new File(getClass().getResource("1.cfg").toURI().getPath());
    prop.setProperty("name", "文章");
    prop.store(new FileOutputStream(file), "no comments");prop.load(new FileInputStream(file));
    String name = prop.getProperty("name");
    System.out.println(name);
      

  7.   

    哦 你意思是直接在文件中写汉字,抱歉没看明白你意思:)不过问题关键不在存的是什么了,再写汉字是乱码你是怎么写的?
    如果按这种方式写:
    prop.setProperty("name", "文章");
    prop.store(new FileOutputStream(file), "no comments");写进去的就是unicode,读就按照标准模式即可
    prop.load(new FileInputStream(file));
    String name = prop.getProperty("name");
      

  8.   

    先把properties文件转下,用native2ascii
      

  9.   

    但是我通过prop.setProperty("name", "文章");来改变配置文件中name的值后,
      1.cfg中name的值出现的是乱码,再用上面的方法读取name的值也是乱码,这个问题该怎么解决啊?
    ===========================================晕 怎么那么急呢 ,你说通过setProperty就乱码了,但是我没出现啊,不知道你是怎么弄出来的
      

  10.   

    native2ascii是一个命令行工具,可以直接对一个完整的文件进行转换
    native2ascii [option] [inputfile] [outputfile]
    说明:
    -[options]:表示命令开关,有两个选项可供选择
    -reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
    -encoding encoding_name:转换为指定编码,encoding_name为编码名称。[inputfile] 表示输入文件全名。
    [outputfile] 输出文件名。如果缺少此参数,将输出到控制台。例:native2ascii -encoding GBK a.cfg a_cn.cfg(将所有的中文转成ascii编码)
      

  11.   

    如果使用ide开发,有专用的插件进行转换,如还有问题请发邮件至:[email protected]