Гирочный код - головная боль. В этой статье представлено решение проблемы искаженного китайца в весеннем MVC, которая заключается в следующем:
1: решение для искаженного кода после того, как контроллер отправки формы получает китайские параметры
Примечание. Кодирование страницы JSP установлено на UTF-8
Метод подчинения формы должен быть публикацией. Фильтр кодирования пружины в рамках метода GET не оказывает никакого влияния
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <form action = "$ {ctx}/user/adduser" name = "userform" method = "post">Измените web.xml и добавьте кодирующие фильтры следующим образом (обратите внимание, что вам необходимо установить значение параметра Forceencoding на True)
<Filter> <Filter-name> HearlyCodingFilter </filter-name> <Filter-class> orgspringframeworkwebfiltercharacterencodingfilter </filter-class> <inat-param> <-param-name> кодирование </param-ame> <param-value> utf-8 </param-value> </init-param> <int-par> <int-par> <int-par> <init-par> <init-par> <init-par> <init-par> <init-par> <init-par> <init-par <param-name> forceEncoding </param-name> <param-value> true </param-value> </init-param> </filter> <Filter-Mapping> <Filter-name> ParmateEncodingFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <url-pattern>/*</url-pattern> </filter> <url-pattern>/*</url-pattern> </filter>
ПРИМЕЧАНИЕ. Поддерживает ли кодирование базы данных китайцев
Правильны ли таблицы базы данных и таблицы?
Измените настройки параметра базы данных подключения конфигурации:
<name = "url" value = "jdbc: mysql: // localhost: 3306/dbname? useUnicode = true & ancervencoding = utf-8"> </property>
Первый случай:
Введите страницу JSP на китайском языке и введите искаженную код контроллера. В настоящее время вам нужно установить, это добавить кодированный фильтр (фильтр), чтобы объединить кодирование в UTF-8. Код заключается в следующем:
Файл конфигурации web.xml:
<Filter> <Filter-name> символ EncoDingFilter </filter-name> <filter-class> orgspringframeworkwebfiltercharacterencodingfilter </filter-class> <init-param> <-Aram-name> кодирование </par am-name> <param-value> utf-8 </param-value> </init-param> </filter> <filter-mapping> <filter-name> parmentencodingfilter </filter-name> <url-pattern>/*</url-pattern> </filter-картирование>
Здесь следует отметить, что лучше всего разместить этот код в начале WebXML, потому что есть порядок перехвата, и, если он размещен сзади, его легко заблокировать.
Второй случай:
База данных китайские данные, страница JSP отображает искаженную код (не искаженное код в строгом смысле, но представлена в форме вопроса)
Поскольку взаимодействие данных между нашим фронтом и бэкэнд использует данные JSON, я мало знаю о причине этой ситуации. Я никогда не сталкивался с этим раньше. Я могу только винить себя в том, что он сделал слишком мало проектов, и это не сложно решить его. Мне просто нужно установить формат кодирования при преобразовании JSON. Код заключается в следующем:
responseSetContentType ("Application/json; charset = utf-8"); // Предотвратить передачу данных из искаженного кодаЕсли вы напишете это предложение, у вас снова не будет искаженных кодов.
Третья ситуация:
Страница также верна, чтобы передать его контроллеру, но после сохранения ее в базе данных она будет искажена (это не строгий искаженный код, как и вышеуказанное, есть все вопросы)
Эта проблема некоторое время беспокоила меня. Я начал чувствовать, что формат кодирования базы данных неверен. По-прежнему невозможно воссоздать базу данных с помощью формата кодирования UTF-8. Наконец, я чувствовал, что это была проблема с JBoss. Наш сервер использует JBoss. Я искал Интернет и добавил формат кодирования при подключении к источнику данных. Код заключается в следующем:
<dataSource jta = "true" jndi-name = "java: jboss/dataSources/jcmysqlds" pool-name = "jcmysqlds" inabled = "true" Использовать Java-context = "true"> <nection-url> jdbc: mysql: // 46/itoo_basic_basic? useunicode = true & harectencoding = utf-8 </connection-url> <Driver> mysql </driver> <Bool> <pref ill> false </prefill> <use-strict-min> false </use-strict-min> <flush-strategy> floadconnectiononly </flush-strategy> </pool> <ceportion> <-aname> root </user-name> <pass <a href = "http: // wwwitnet/edu/ebg/" target = "_ blank"> word </a>> 123456 </pass <a href = "http: // wwwitnet/edu/ebg/" target = "_ blank"> word </a>> </security> </dataSource>
1. Пейдж искажен
Страницы относительно легко решить, и они часто устанавливают соответствующие наборы символов на соответствующей странице JSP или HTML -странице. нравиться
%@page language = "java" contentype = "text/html; charset = utf-8" pageencoding = "utf-8"%
2. Передача
В процессе передачи значения искаженные коды также появляются часто. Не говоря уже о том, какой это сценарий, обычно используемые решения включают следующие конфигурации, указанные фильтры
<!-Настройте фильтр запроса, установите формат кодирования в UTF-8, избегайте китайского искаженного-> <Filter> <Filter-name> SpringUtf8encoDing </filter-name> <filter-class> orgspringframeworkwebfiltercharacterencodingfilter </filter-class> <int-param> <param-name> encodingfilter </filter-class> <init-param> <param-name> encoding> nemoding> namoding> namoding> </incoding> </inname> encodingfilter </filter-class> <inatparam> <param-name> encoding <param-value> utf-8 </param-value> </init-param> <init-param> <init-param> <param-name> forceencoding </param-name> <param-value> true </param-value> </init-param> </filter>
Установите набор символов запроса
Часто после передачи его со стойки регистрации к соответствующему контроллеру или действию появляется искаженный код. Моя общая идея - сначала распечатать набор символов по умолчанию.
SystemOutPrintln (requestGetcharacterCoding ());
Затем, в соответствии с ситуацией, если требуемый набор символов не будет напечатан, установите соответствующий набор символов.
requestsetcharacterencoding ("UTF-8");Конечно, некоторые ситуации не могут быть решены. Вы можете использовать следующее
String str = newstring ((requestGetParameter ("bigQuestionTypEname"))) GetBytes ("iso-8859-1"), "UTF-8")3. Сохранить искаженную базу данных кода
Это относительно сложно. Здесь LZ использует MySQL, а MySQL используется для представления, как решить эту искаженную проблему
Как мы все знаем, будь то чистый JDBC, Hibernate или JPA, лучше использовать его внизу. Фактически, это по сути JDBC, и соответствующая структура инкапсулируется только на соответствующей основе. Так что независимо от того, что это за технология, она будет использовать URL -адрес, подключенный к базе данных. Итак, URL должен быть проверен в первую очередь
URL
Стандартная ситуация добавит соответствующие настройки набора символов после соответствующей ситуации, следующим образом
jdbcurl = jdbc: mysql: /// itcastoa? useUnicode = true & harementencoding = utf-8
Как упомянуто выше, useUnicode должен быть подключен к набору символов в базе данных, и что это? Это проблема, в XML, и это экономный характер &. Если вы используете XML для настройки соответствующей конфигурации подключения базы данных, то это проблема. Но если вы используете ** свойства, возникнет проблема, и вы должны удалить усилитель. Это действительно опыт того, как LZ имеет кровавую голову.
база данных
Проблема здесь также относительно трудно справиться. Войдите в базу данных
Просмотреть формат кодирования базы данных
<img src = "http: // www2ctocom/uploadfile/collfiles/20150302/png" 7plu ninja htahle ninja: 1opentablaug: Sun. 1 день SQL> "=" ">
Вы можете увидеть, является ли набор символов сервера Latin1. Здесь нам нужно поговорить об обще используемых наборах символов.
Для мира и процветания мира организация ISO обозначила решение наборов символов Unicode. Кодирование Unicode-это мост взаимной связи и преобразования между различными кодировками, в том числе 32-разрядным двоичным, поэтому он может приспособиться к силе 2, что достаточно для жизни. Unicode разделен на три решения в соответствии с различными потребностями.
UTF8: используется для решения кодирования, которое появляется на разных языках на международном уровне. Для английского языка используются 8 цифр, а для китайской используются 3 цифры. Он может отображаться в любом браузере, который поддерживает набор символов UTF9 без дальнейшей обработки.
Два других - UTF16 и 32, которые не будут отредактированы здесь. Вы можете проверить это самостоятельно, но это все еще из -за удобства хранения и использования, чтобы решить, какой из них использовать.
Хорошо, относительно знакомым, это GBK, обычно известный как Национальный стандартный кодекс, разработанный китайскими национальными стандартами, и содержит только китайские иероглифы. Так что по сравнению с этими двумя, UTF8 является лучшей совместимостью, но имеет большую емкость хранения.
Вернитесь в ближайшее время, примерно, если вы зарядите набор персонажей, или вернитесь и сначала решите проблему. Так что можно использовать GBK или UTF8 здесь. Но Latin1 определенно невозможна, здесь он в основном установлен такой командой
Сервер, база данных и детали таблицы данных устанавливаются отдельно, и необходимо установить кодирование соединения. Настройки кодирования соединения следующие:
MySQL> SET PARTACK_SET_CLIENT = 'GBK'; MySQL> SET PARTICK_SET_CONNECTION = 'GBK'MYSQL> SET PARTICK_SET_RESULT =' GBK '
Установите кодирование, и вы можете успешно вставить китайский ниже. На самом деле, это может быть решено в одном предложении.
Обычно используются команды
Просмотреть формат кодирования базы данных
показать переменные, такие как 'martact_set_%';
Посмотреть создание таблиц в базе данных
Показать создание табличного таблица;
Установить формат кодирования базы данных
SetNames 'GBK';
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.