Как использовать Unicode в message properties файлах

Внезапно столкнулся с тем, что IDEA перестала понимать галочку в настройках transparent native-to-ascii conversion. А при попытке запихнуть в файл русские символы на страницах отображались дичайшие кракозябры, которые получились путём отображения UTF-8 как ISO-8859-1.

Вообще странное решение использовать по умолчанию именно эту кодировку, но да ладно.

Как оказалось, при загрузке файлов используется

public void load(InputStream inStream) throws IOException

Которая по умолчанию читает файлы в ISO-8859-1. Вот кусок Javadoc’а из DefaultPropertiesPersister.java

This is a capability that standard java.util.Properties unfortunately lacked up until JDK 1.5: were only able to load files using the ISO-8859-1 charset there.

Этот же метод по умолчанию вызывает Spring в методе

org.springframework.context.support.ReloadableResourceBundleMessageSource#loadProperties

если не указана кодировка.

Чтобы указать её, в файле конфигурации (или в том месте, где вы описываете конфигурацию Spring context) надо добавить в бин

ReloadableResourceBundleMessageSource

Свойство defaultEncoding с тем значением, которое вам нужно:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
    p:basename="classpath:messages" p:defaultEncoding="utf-8" />

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *