为了账号安全,请及时绑定邮箱和手机立即绑定

Eclipse中的Java属性UTF-8编码

Eclipse中的Java属性UTF-8编码

最近,我不得不将正在处理的webapp的编码从ISO-xx切换为utf8。除了属性文件,其他一切都进行得很顺利。我加入-Dfile.encoding=UTF-8了eclipse.ini,普通文件工作正常。但是,属性显示一些奇怪的行为。如果我utf8从Notepad ++ 复制编码的属性并将其粘贴到Eclipse,它们将显示并正常工作。重新打开属性文件时,我看到一些Unicode字符,而不是正确的字符,例如:Zur\u00EF\u00BF\u00BDck instead of Zurück但是应用仍然可以正常运行。如果我开始编辑属性,添加一些特殊字符并保存,它们将正确显示,但是它们不起作用,并且以前所有可用的特殊字符都不再起作用。当我将本地版本与CVS进行比较时,我可以在远程文件上正确看到特殊字符,并且在更新后,我又重新开始:应用程序可以运行,但是Eclipse显示Unicode字符。我尝试通过右键单击文件编码并选择“其他:UTF8”来更改文件编码,但这没有帮助。它还说:“由内容决定:ISO-8859-1”我正在使用基于Eclipse 3.3的Java 6和Jboss Developer我可以通过在Notepad ++中编辑属性并将其粘贴到Eclipse中来使用它,但是如果有人可以帮助我在Eclipse中修复此问题,我将不胜感激。
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

属性文件根据定义为ISO-8859-1-请参阅文档以获取Properties类。


Spring有一个替换项,可以使用加载指定的编码PropertiesFactoryBean。


编辑:正如Laurence在评论中指出的那样,Java 1.6引入了for的重载,load并store采用Reader/ Writer。这意味着您可以使用所需的任何编码为文件创建阅读器,并将其传递给load。遗憾的是FileReader 仍然没有让你指定在构造函数(AARGH)的编码,所以你会坚持使用链接FileInputStream和InputStreamReader在一起。但是,它将起作用。


例如,要使用UTF-8读取文件:


Properties properties = new Properties();

InputStream inputStream = new FileInputStream("path/to/file");

try {

    Reader reader = new InputStreamReader(inputStream, "UTF-8");

    try {

        properties.load(reader);

    } finally {

        reader.close();

    }

} finally {

   inputStream.close();


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 527 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信