Spring属性文件

时间:2009-11-13 05:05:41

标签: java spring

您好,使用spring框架开发了这个j2ee Web应用程序。我在属性文件中使用nihongo字符渲染mnessages时遇到问题。我尝试使用native2ascii将文件转换为ascii,它解决了我的问题。没有其他方法可以通过在配置文件中将编码设置为ascii来转换文件,而不是通过在命令提示符中执行native2ascii来手动转换它

3 个答案:

答案 0 :(得分:2)

AfAIK在属性文件和资源包中必须使用ASCII。在Spring XML配置文件中,Unicode应该可以正常工作。如果您愿意,可以编辑Unicode中的属性文件,并在构建过程中自动运行native2ascii(在Ant,Maven等中)。

答案 1 :(得分:2)

根据java.util.Properties API文档:

  

load(Reader)/ store(Writer,String)方法以下面指定的简单的面向行的格式从基于字符的流加载和存储属性。 load(InputStream)/ store(OutputStream,String)方法的工作方式与load(Reader)/ store(Writer,String)对的工作方式相同,只是输入/输出流以ISO 8859-1字符编码进行编码即可。无法在此编码中直接表示的字符可以使用Unicode转义编写;在转义序列中只允许一个'u'字符。 native2ascii工具可用于将属性文件转换为其他字符编码或从其他字符编码转换。

(请注意ISO 8859-1 ASCII相同,因为许多人在这里错误地讨论了这一点。)

因此,要在不需要native2ascii的情况下解决特定问题,您应该使用Properties#load(Reader)代替InputStreamReader(input, charset)

Properties properties = new Properties();
properties.load(new InputStreamReader(classLoader.getResourceAsStream("file.properties"), "UTF-8"));

请注意,此方法是在4年前的Java 1.6中引入的。确保你也在使用它。

我不做Spring,所以我不能详细介绍如何让Spring以这种方式工作,但很明显你需要覆盖/替换Spring的资源包管理器(如果有的话)。 / p>

答案 2 :(得分:1)

嘿,我搜索了同样的问题,发现用德语写的东西对我有帮助:http://www.stefanglase.de/2009/10/13/spring-messagesource-mit-utf-8-encoding/