资源包在 form:input 标记的占位符中错误地显示 utf-8 字符

Resource bundle display incorrectly utf-8 characters in Placeholder of form:input tag

在我的项目中,我使用 Resorce bundle 来显示多语言,一切正常,只是无法在占位符中显示值:

<label>
    <spring:message code="home.address"/>
</label>
<spring:message code="home.street" var="bdstreet"/>
<form:input id="txtstreet" class="form-control" path="address.street" placeholder="${bdstreet}" />
<form:errors path="address.street" cssClass="error" />

英语显示正常,但越南语不正确。 我的配置:

<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <beans:property name="basenames">
        <beans:list>
            <beans:value>language/home</beans:value>
        </beans:list>
    </beans:property>
</beans:bean>
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**" />
        <beans:bean id="localeChangeInterceptor"
            class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <beans:property name="paramName" value="lang" />
        </beans:bean>
    </mvc:interceptor>
</mvc:interceptors>

<beans:bean id="localeResolver"
    class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <beans:property name="cookieName" value="lang" />
    <beans:property name="defaultLocale" value="vn_VN" />
</beans:bean>
<!-- End Resource Bundle -->

尝试在 ResourceBundleMessageSource 声明中添加 defaultEncoding 属性:

<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <beans:property name="basenames">
        <beans:list>
            <beans:value>language/home</beans:value>
        </beans:list>
    </beans:property>
    <beans:property name="defaultEncoding" value="UTF-8"/>
</beans:bean>

此外,检查您的文件是否以 utf-8 编码存储。

关于占位符。看起来,您以编码状态存储字符串。这意味着当您在 html 中显示它时,浏览器将自动解码字符串。但是当您将其显示在占位符中时,浏览器将不执行任何操作,并按原样显示它们。解决方案,不要在您的资源中对字符串进行编码。只需键入包含常用字母的字符串。示例:

simple.string=Qu&#7889;c Gia  // now you store in this format

simple.string=Quốc Gia  // you should store in this format

是的,我发现了我的问题。

我刚刚更改了 BunderResource 插件来格式化我的属性文件。现在可以使用了。

(我之前用unikey和"NCR Decimal",占位符位置显示不正确)

我用 BunderResource 插件重新创建了属性文件:

那个插件会为我重新格式化。 结果是: @Ken Bekov,谢谢你的帮助:) 我用它: Java properties UTF-8 encoding in Eclipse