GvS*_*GvS 48 java eclipse encoding utf-8
我最近不得不将我正在处理的webapp的编码切换ISO-xx到utf8.一切顺利,除了属性文件.我加入-Dfile.encoding=UTF-8了eclipse.ini,普通文件工作正常.然而属性显示出一些奇怪的行为
如果我utf8从Notepad ++ 复制编码属性并将它们粘贴到Eclipse中,它们会显示并正常工作.当我重新打开属性文件时,我看到一些Unicode字符而不是正确的字符,如:
Zur\u00EF\u00BF\u00BDck instead of Zurück
Run Code Online (Sandbox Code Playgroud)
但应用程序仍然正常.如果我开始编辑属性,添加一些特殊字符并保存,它们会正确显示,但它们不起作用,所有以前工作的特殊字符都不再起作用.
当我将本地版本与CVS进行比较时,我可以在远程文件上正确地看到特殊字符,并且在更新之后我再次开始:app工作,但Eclipse显示Unicode字符.
我尝试通过右键单击并选择"其他:UTF8"来更改文件编码,但它没有帮助.它还说:"根据内容确定:ISO-8859-1"
我正在使用基于Eclipse 3.3的Java 6和Jboss Developer
我可以通过在Notepad ++中编辑属性并在Eclipse中粘贴它们来使用它,但如果有人可以帮助我在Eclipse中修复它,我将不胜感激.
Jon*_*eet 64
根据定义,属性文件是ISO-8859-1 - 请参阅Properties类的文档.
Spring有一个替换,可以使用指定的编码加载PropertiesFactoryBean.
编辑:正如劳伦斯在评论中指出的那样,Java 1.6引入了重载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();
}
Run Code Online (Sandbox Code Playgroud)
bay*_*ren 54
不要浪费你的时间,你可以在Eclipse中使用Resource Bundle插件
Mar*_*gón 12
这不是Eclipse的问题.如果使用Properties类来读取和存储属性文件,则该类将转义所有特殊字符.
将属性保存到流或从流中加载它们时,将使用ISO 8859-1字符编码.对于无法在此编码中直接表示的字符,使用Unicode转义; 但是,在转义序列中只允许使用一个"u"字符.native2ascii工具可用于将属性文件转换为其他字符编码或从其他字符编码转换.
小于\ u0020且字符大于\ u007E的字符将写为\ uxxxx,表示相应的十六进制值xxxx.
小智 10
Properties props = new Properties();
URL resource = getClass().getClassLoader().getResource("data.properties");
props.load(new InputStreamReader(resource.openStream(), "UTF8"));
Run Code Online (Sandbox Code Playgroud)
奇迹般有效
:-)
| 归档时间: |
|
| 查看次数: |
104142 次 |
| 最近记录: |