Grails 3.2 Resource Bundle не отображает текст с правильной кодировкой
Начиная с Grails 3.2.8 (и выше) комплект ресурсов в моем приложении не работает должным образом. Немецкие умлауты (или общие символы UTF-8, которые не являются частью ASCII) отображаются с помощью. Например, немецкое слово über отображается как ber.
Сначала я подозревал processResources
Gradle задачи, которые выполняет native2ascii
, Но мои файлы комплекта ресурсов 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} verf\u00fcgbar
При отладке моего приложения, работающего как автономная WAR, используя
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
загружает мой messages_de.properties
файл с использованием кодировки UTF-8, так как в нем регистрируется следующее сообщение.
s.PluginAwareResourceBundleMessageSource : Loading properties [messages_de.properties] with encoding 'UTF-8'
После загрузки файла свойств в java.util.Properties
класс, я вижу все не ASCII символы, например,.
Любая подсказка, что здесь происходит не так?
1 ответ
У меня была похожая проблема, и для меня решение было в следующем ответе: /questions/1202935/spring-resourcebundlemessagesource-kodirovka-dlya-cheshskogo-messageresourcegetmessage/1202944#1202944
в resources.groovy
установить defaultEncoding
в 'UTF-8'
для messageSource
боб.