免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4038 | 回复: 6
打印 上一主题 下一主题

求教org.apache.commons.configuration 编码问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-25 21:41 |只看该作者 |倒序浏览
求教org.apache.commons.configuration 编码问题
本人想通过configuration读取设置。然后把修改值存回原来的文件,但发现实现后。配置文件里的中文字就变成unicode码了。我用过org.apache.commons.configuration.FileConfiguration里的setEncoding但好像没有效果。请问各位大哥。那位知道什么原因

论坛徽章:
0
2 [报告]
发表于 2006-11-28 21:34 |只看该作者
顶个先,高手帮忙

论坛徽章:
0
3 [报告]
发表于 2006-11-29 09:40 |只看该作者
PropertiesConfiguration和XMLConfiguration都继承于AbstractFileConfiguration

所以你可以用

load(java.io.InputStream in, java.lang.String encoding)

save(java.io.OutputStream out, java.lang.String encoding)

来存取配置文件

论坛徽章:
0
4 [报告]
发表于 2006-11-30 12:10 |只看该作者
为什么他自有的setEncoding无用呢?

论坛徽章:
0
5 [报告]
发表于 2006-12-01 16:19 |只看该作者
是的,我做了试验,写入

test = 中文

结果文件中显示

test = \u4E2D\u6587


用save()方法,应该是直接把内存中的字符串内容写入了properties文件,

你可以在c盘下建立一个文件,用下面的代码测试



  1.                 PropertiesConfiguration  configuration = null;
  2.                 try {
  3.                         configuration = new PropertiesConfiguration();
  4.                         configuration.clear();
  5.                         configuration.setEncoding("big5");
  6.                         configuration.load(new java.io.File("c:/test.properties"));
  7.                         log.info(configuration.getEncoding());
  8.                         log.info(configuration.getString("test"));
  9.                         configuration.clear();
  10.                         configuration.setEncoding("gbk");
  11.                         configuration.load(new java.io.File("c:/test.properties"));
  12.                         log.info(configuration.getEncoding());
  13.                         log.info(configuration.getString("test"));
  14.                         configuration.clear();
  15.                         configuration.setEncoding("utf-8");
  16.                         configuration.load(new java.io.File("c:/test.properties"));
  17.                         log.info(configuration.getEncoding());
  18.                         log.info(configuration.getString("test"));
  19.                 } catch (Exception ex) {
  20.                         log.info("err", ex);
  21.                 }

复制代码


目前只能建议你写一个自己用save方法

论坛徽章:
0
6 [报告]
发表于 2006-12-01 16:33 |只看该作者
如果你不在运行时修改文件编码,你可以用这个指令

$ native2ascii -reverse -encoding gbk test.properties test_zh.properties

论坛徽章:
0
7 [报告]
发表于 2006-12-17 20:31 |只看该作者
可能是他的一个BUG吧.大家去提交一下呀.呵呵
另外我用config类的话.如果再用log4j的话.他就提示我日志配置文件一定要在当前目录里.奇怪的很.不知道有没有碰到跟我同样的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP