我正在使用Spring 4并使用MessageSource进行本地化。
我的 xml 文件有:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:i18n/myfile"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>
其中一个本地化文件myfile_nl.properties具有:
prop1=abc
other1=o1
other2=o2
other3=o3
获取本地化字符串的 Java 代码为:
@Autowired
private MessageSource messageSource;
String localizedMsg = messageSource.getMessage("prop1", null, locale);
现在,我收到找不到 prop1 的异常。 因此,我编辑了属性文件以稍后在文件中复制 prop1。
other1=o1
other2=o2
prop1=abc
other3=o3
现在检测到 prop1。
为什么 prop1 在第一行时没有被检测到?
您的 UTF-8 属性文件可能以 BOM(字节顺序标记(开头。
由于 Java 不执行 BOM,因此 3 字节 BOM 被视为不可显示的 BOM 字符,并成为第一行中列出的属性名称的一部分,这当然会使它不匹配。
在文本编辑器中编辑文件,该编辑器可以在没有 BOM 表的情况下保存文件。
Notepad++就是这种文本编辑器的一个例子。请参见:删除文件中的 BOM 字符。