Grails 3.2 Resource Bundle不使用正确的编码显示文本



由于Grails 3.2.8(及更高(我的应用程序中的资源束无法正常工作。德国umlauts(或不属于ASCII的一般UTF-8字符(与``ASCII''一起显示。例如。德语单词über显示为 ber

首先,我怀疑执行native2asciiprocessResources Gradle任务。但是我的UTF-8资源捆绑文件已正确复制到build/resources/main/*.properties并将其转换为US-ASCII

源文件显然是使用UTF-8编码。

file -I grails-app/i18n/messages_de.properties grails-app/i18n/messages_de.properties: text/plain; charset=utf-8

运行./gradlew clean processResources后,所有资源捆绑文件都由native2ascii成功处理,并使用US-ASCII进行编码。

file -I build/resources/main/messages_de.properties
build/resources/main/messages_de.properties: text/plain; charset=us-ascii

所有非ASCII炭都被逃脱了。

event.free.space={0,number} von {1,number} verfu00fcgbar

使用

调试我的应用程序作为独立战争
java -jar -server -Dserver.address=127.0.0.1 -Dserver.port=50000 
    -Dgrails.env=prodMySQL -Djava.security.egd=file:/dev/./urandom 
    -Xmx768M -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005  
    build/libs/my.war

我注意到org.grails.spring.context.support.PluginAwareResourceBundleMessageSource使用UTF-8编码加载我的messages_de.properties文件,因为它会记录以下消息。

s.PluginAwareResourceBundleMessageSource : Loading properties [messages_de.properties] with encoding 'UTF-8'

将属性文件加载到A java.util.Properties类中后,我将所有非ASCII字符视为例如�。

有什么线索在这里出了什么问题?

我也有一个类似的问题,对我而言,解决方案是在此答案中:https://stackoverflow.com/a/34268213/6899501

resources.groovy中,将defaultEncoding设置为messageSource bean的'UTF-8'

最新更新