Получение вопросительного знака вместо акцентированного письма с помощью spring MVC 3

я попробовал много вещей, и не мог понять, почему я получаю ? вместо акцентированного характера.

Я использую на своем html:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

и мой контроллер имеет следующий код

@RequestParam ("name") String name
name = name.trim();
system.out.println(name);
//response t?ata
//expected tábata

как это исправить?

спасибо

2 ответов


Я могу исправить эту проблему, добавив следующий код в мой шаблон:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

акцентированные буквы и другие языки, такие как мандарин и арабский, сложны.
Я думаю, вы не видели последний из этого вопроса.
Вы должны убедиться, что ваш текст правильно закодирован в любой ссылке в цепочке.

Э. Г.

  • база данных - >java - >ответ - >браузер
  • файл свойств - >jav - > ответ - >браузер
  • запрос (param / форма) - >ответ - > браузер
  • java - > регистратор -> консоль

Я предлагаю следовать этому замечательному ответу как заставить UTF-8 работать в Java webapps?

чтобы настроить его на весну, используйте spring's CharacterEncodingFilter.

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
      org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
         </init-param>
        <init-param>
             <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
         </init-param>
 </filter>

Если вы используете i18n, обязательно определите кодировку по умолчанию для вашего ResourceBundleMessageSource, например

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

убедитесь, что ваши файлы свойств правильно закодированы с помощью Java native2ascii.
Или лучше, если вы используете eclipse I рекомендую плагин редактора свойств.
Когда-нибудь сторонние рамки сломают что-то, и вам нужно сделать "волшебный"

new String(yourstring, "UTF8")

для получения дополнительной информации см. здесь

обратите внимание, что некоторые распознаватели представлений также должны определять кодировку.