Сохраняйте китайские символы с помощью Spring-MVC / Java - PullRequest
1 голос
/ 01 декабря 2010

Я пытаюсь сохранить китайские иероглифы из формы, отправленной в базу данных.

Я установил contentType на jsp через

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

Я также установил этот тег внутри jsp:

<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" />

Однако, когда я отправляю форму, мой контроллер видит символ, отличный от того, что я ввел.

Я ввожу персонажа 我 и вижу æ ?? в контроллере. Когда данные снова отображаются на странице, они отображают тот же неправильный символ (æ ??).

Почему контроллер не получает правильный символ?

Ответы [ 3 ]

3 голосов
/ 01 декабря 2010

Объявите CharacterEncodingFilter в вашем файле web.xml перед любым другим фильтром

<filter>
    <filter-name>charsetFilter</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>
</filter>

<filter-mapping>
    <filter-name>charsetFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

В своем файле jsp попробуйте добавить его в самом начале файла:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
1 голос
/ 01 декабря 2010

Не все браузеры будут использовать набор символов, указанный на странице или в форме.Spring предоставляет фильтр CharacterEncodingFilter , который может добавлять кодировку символов или принудительно задавать определенную кодировку по мере поступления запроса до его попадания в контроллер.

0 голосов
/ 01 декабря 2010

Добавьте атрибут accept-charset к вашей форме:

<form method="POST" accept-charset="utf-8" ... >

Это говорит браузеру отправлять содержимое вашей формы как UTF-8 на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...