Spring MVC messageSource испанских символов - PullRequest
0 голосов
/ 30 июня 2011

У меня есть портлет, который использует Spring mvc, и когда портал на испанском, а в контроллере я пытаюсь использовать messageSource.getMessage, он возвращает латинские символы в виде странных символов.

MessageSource def в контексте приложения:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
         <property name="basenames" value="classpath:messages"/>
         <property name="defaultEncoding" value="UTF-8"/>
</bean>

Def в контроллере:

@Autowired
    public void setMessageSource(MessageSource messageSource) {
        this.messageSource = messageSource;
    }

Когда я пытаюсь выполнить следующее, он возвращает странные символы:

messageSource.getMessage("messagekey", null, request.getLocale());

Кажется, что он игнорирует UTFКодировка -8.Есть идеи?

Ответы [ 3 ]

2 голосов
/ 05 июля 2011

Нашел решение моей проблемы, прочитав это -> http://forum.springsource.org/showthread.php?64002-UTF-8-encoding-in-Spring-MVC-Portlet и выполнив дальнейшую диагностику.

Это происходило при обслуживании ресурса и использовании ajax. Я решил проблему, установив кодировку символов в UTF-8 на ResourceResponse, по умолчанию это ISO-8859-1.

Вы можете использовать любой из следующих вариантов:

response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");

или

response.setContentType("text/html;charset=UTF-8");
1 голос
/ 30 июня 2011

Проверьте кодировку вашего messages_es.properties файла. Это должен быть также UTF-8.

0 голосов
/ 13 июня 2015

Извините мой плохой уровень английского.У меня были похожие проблемы.Когда вы пытаетесь прочитать файл из источника сообщений, важно, чтобы среда JVM также имела кодировку UTF8.Другими словами, определите параметры виртуальной машины: -Dfile.encoding = UTF8

Это может решить проблему кодирования при любой попытке чтения из файлов файловой системы.Может быть, это кому-то поможет :)

...