Недавно, используя Ajax для запроса фона SpringMVC для запроса базы данных MySQL, на странице показано искаженное китайское код
Первоначально настроен в Mybatis следующим образом
<select id = "QueryContentById" resultType = "java.lang.string" parameterType = "string"> выберите текст из новостей, где id =#{o} </select>
Текстовое поле новостей о таблице носят типа Blob
Значение текста, найденное таким образом, всегда отображается в искаженном коде в консоли.
После этого Google поищил соответствующий контент ResultyType = Blob, поэтому он изменил его на refultype = "java.util.map", и и
byte [] b = (byte []) map.get ("text"); string s = new String (b, "UTF-8");
Распечатайте S, и китайский текст отображается нормально в настоящее время, но дисплей страницы все еще искажен.
Поэтому это запрос AJAX, поэтому проверьте информацию о заголовке ответа и найдите следующее
Content-typetext/html; charset = iso-8859-1
Поскольку база данных равномерно кодируется как UTF-8, информация о заголовке ответа изменяется
@Requestmapping (value = "/QueryContentById", method = requestMethod.get, provectes = "text/plain; charset = utf-8") public @Responsebody String QueryContentByid {MAP = (MAP) NDRSERVICE.QUERYCONTENTBYID (ID); ;}
Давайте посмотрим на еще одну проблему примера
1. Контроллер SpringMVC получает искаженную код:
(1) Добавить фильтр набора символов в web.xml:
Скопируйте код следующим образом: <!-Filter Spring Seart Set Settlempt -Class> <init-param> <param-name> кодирование </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> <filter-mapping> <filter-name> springencodingfilter </filter-name> <url-p atern>/*</url-pattern> </filter-mapping>
(2) Изменить JSP и другие страницы: charset = utf-8 "и pageencoding =" utf-8 "
2. Контроллер считывает правильный китайский, но после сохранения его в базе данных он становится "??"
(1) Изменить подключение к базе данных jdbc_url = jdbc: mysql: // localhost: 3306/mybatistest? Useunicode = yes & hareverencoding = utf8 ("&": edge "&" в файле XML)
(2) изменить набор символов базы данных на UTF-8: Откройте my.ini в корневом каталоге MySQL (mysql5.6-мой default.ini и скопируйте его как my.ini), и добавьте его в конкретное местоположение ниже (или модифицировано):
Кода кода выглядит следующим образом: [mysqld] символ-server = utf8 [client] default-character-set = utf8 [mysql] default-character-set = utf8
Нет проблем с установкой на моей стороне.
Краткое содержание:
Обычно проблема искаженного кода китайского языка вызвана неправильными настройками кодирования символов. Наконец проблема была решена.