猿问

未检测到 Spring MessageSource 属性文件第一行

我正在使用 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 在第一行时没有被检测到?


白衣染霜花
浏览 116回答 1
1回答

手掌心

您的 UTF-8 属性文件可能以 BOM(字节顺序标记)开头。由于Java不做BOM,3字节的BOM被当做不可显示的BOM字符,成为第一行列出的属性名的一部分,当然会导致不匹配。在可以在没有 BOM 的情况下保存文件的文本编辑器中编辑文件。Notepad++ 是此类文本编辑器的一个示例。
随时随地看视频慕课网APP

相关分类

Java
我要回答