You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate Validator i18n校验消息显示乱码问题如何解决

乱码根因

你看到的નામ...形式乱码是典型的UTF-8编码多字节文本被按ISO-8859-1单字节编码错误解码导致的,具体触发逻辑:

  • 配置的ReloadableResourceBundleMessageSource默认采用ISO-8859-1编码读取properties资源文件,而存放古吉拉特语文本的validation_gu.properties实际以UTF-8编码存储,读取阶段就已经发生编码错误,和后续JSP页面、浏览器编码配置无关(当前JSP端的UTF-8配置是正确的)。
  • 英文资源文件无乱码是因为英文字符在UTF-8和ISO-8859-1编码下的字节表示完全一致,不会触发解码错误。
可行解决方案
  1. 给validationMessageSource Bean显式指定资源文件读取编码为UTF-8,修改Spring XML配置如下:
<bean id="validationMessageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="classpath:validation" />
    <!-- 新增配置:指定按UTF-8编码读取properties资源文件 -->
    <property name="defaultEncoding" value="UTF-8"/>
    <!-- 可选配置:开发环境可设置缓存时间为0,修改资源文件后无需重启即可生效 -->
    <property name="cacheSeconds" value="0"/>
</bean>
  1. 确认开发工具中properties文件的保存编码:
    • IDEA环境打开Settings -> Editor -> File Encodings,将Default encoding for properties files设置为UTF-8,同时勾选Transparent native-to-ascii conversion选项,避免IDE自动转码引发额外问题。
    • Eclipse环境打开资源文件属性页,将文本文件编码设置为UTF-8后重新保存古吉拉特语资源内容。
  2. 配置修改后重启应用服务,清空浏览器缓存再访问即可正常显示古吉拉特语校验消息。

内容的提问来源于stack exchange,提问作者prem30488

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:18:16