自Grails 3.2.8(及更高版本)以来,我的应用程序中的资源包无法按预期工作。德语变音符号(或不属于ASCII的一般UTF-8字符)用 显示。例如。德语单词über显示为 ber。
首先,我怀疑执行processResources
的{{1}} Gradle任务。但我的UTF-8资源包文件已正确复制到native2ascii
并转换为build/resources/main/*.properties
。
源文件显然是使用UTF-8进行编码。
US-ASCII
运行
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
所有非ASCII字符都被转义。
file -I build/resources/main/messages_de.properties
build/resources/main/messages_de.properties: text/plain; charset=us-ascii
使用
调试作为独立WAR运行的应用程序时event.free.space={0,number} von {1,number} verf\u00fcgbar
我注意到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
使用UTF-8编码加载了我的org.grails.spring.context.support.PluginAwareResourceBundleMessageSource
文件,因为它记录了以下消息。
messages_de.properties
将属性文件加载到s.PluginAwareResourceBundleMessageSource : Loading properties [messages_de.properties] with encoding 'UTF-8'
类后,我将所有非ASCII字符视为例如
有什么线索在这里出错?
答案 0 :(得分:0)
我有一个类似的问题,对我来说,解决方案是在此答案中: https://stackoverflow.com/a/34268213/6899501
在resources.groovy
中,将defaultEncoding
bean的'UTF-8'
设置为messageSource
。