Сегодня при развертывании программы веб-сервисов сервлет, получающий данные со страницы, столкнулся с искаженной проблемой. В сервлете я добавил в код текст request.setCharacterEncoding("GB2312"); но искаженная проблема все равно возникла.
Найдите информацию в Интернете следующим образом: JAVA — это кодировка Unicode, сначала преобразуйте ее в ISO8859-1, а затем преобразуйте в GBK или GB2312.
Java-код
Это китайский!
Есть более простой способ — настроить преобразование кодировки непосредственно на сервере. Используется TOMCAT5.0.28.
Найдите файл SERVER.XML в каталоге ../Tomcat 5.0/conf, откройте его с помощью WordPad и установите его следующим образом:
Просто добавьте внутри атрибут URIEncoding="GBK"
Тест пройден и готов. Тогда какую роль играет предложение request.setCharacterEncoding("GB2312"). Если оно не может решить запутанную проблему, какую роль мы будем использовать? Информация организована следующим образом:
(1) Страница JSP на китайском языке, но если вы посмотрите на нее, она будет искажена:
Решение состоит в том, чтобы закодировать страницу JSP. Из-за проблемы с кодировкой при преобразовании JSP в файл Java некоторые серверы по умолчанию используют ISO-8859-1. Если китайский язык вводится непосредственно в JSP, JSP обрабатывает его как ISO8859. 1 определенно является проблемой. Мы можем подтвердить это, посмотрев на промежуточный файл Java, созданный Jasper.
(2) При использовании объекта Request для получения кода китайского символа, предоставленного клиентом, будут отображаться искаженные символы:
Решение состоит в том, чтобы настроить фильтр, который является фильтром сервлета. Код выглядит следующим образом:
request.setCharacterEncoding("GBK");
// Передаем управление следующему фильтру
Chain.doFilter(запрос, ответ);
}
<filter-mapping></filter-mapping>
<имя-фильтра></имя-фильтра>Установить кодировку символов
<url-шаблон></url-шаблон>/*
Также существует обработка информации, содержащей китайские иероглифы. Код обработки:
Решение:
1) Откройте файл server.xml tomcat, найдите блок и добавьте следующую строку:
URIEncoding="GBK"
Полное должно быть следующим:
(4) На странице JSP и на кнопках есть китайские иероглифы, но при просмотре страницы через сервер символы появляются искаженно:
Решение: во-первых, локализованный текст сообщения не должен включаться непосредственно в файл JSP, а должен быть получен из пакета ресурсов через тег <bean:message>. Вам следует поместить текст на китайском языке в файл Application.properties. Этот файл находится в папке WEB-INF/classes/*. Например, если на странице есть две метки для имени и возраста, мне сначала нужно создать приложение. свойства. Содержимое внутри должно быть name="name". age = «возраст», затем я помещаю этот файл в папку WEB-INF/classes/properties/, а затем кодирую его в соответствии с файлом Application.properties и создаю файл ресурсов на китайском языке, предполагая, что имя — Application_cn.properties. Команда Native2ascii предусмотрена в JDK и может реализовать преобразование кодировки символов. Найдите каталог, в котором вы поместили файл Application.properties, в среде DOS. Будет создан китайский файл ресурсов Application_cn.properties, закодированный в GBK: own2ascii ?encoding gbk Application.properties Application_cn.properties. приведенная выше команда. В будущем будет создан файл Application_cn.properties со следующим содержимым: name=u59d3u540d. age=u5e74u9f84, настроенный в Struts-config.xml: <message-resources параметр="properties.Application_cn"></message-resources>. На данный момент более половины работы в основном сделано. Затем вам нужно написать на странице JSP имя, которое вам нужно написать <bean:message key=""name"">. на странице появится китайское имя, то же самое касается возраста, и китайские иероглифы на кнопке также обрабатываются таким же образом.
(5) Код, записанный в базу данных, искажен:
Решение: Настройте фильтр, который является фильтром сервлета. Код тот же, что и во второй раз.
Если вы подключены к базе данных напрямую через JDBC, код конфигурации будет следующим: jdbc:mysql://localhost:3306/workshopdb? useUnicode=true&characterEncoding=GBK, чтобы гарантировать, что код в базе данных не будет искажен.
Если вы подключаете источник данных, вы не можете написать это так. Во-первых, вам нужно записать это в файл конфигурации. Место для настройки источника данных в tomcat 5.0.19 находится в созданном мною C:Tomcat 5.0confCatalinalocalhost. Проект является мастерской, а каталог, в котором он находится, находится в веб-приложении. Файл конфигурации Workshop.xml выглядит следующим образом:
<resource name="jdbc/WorkshopDB"></resource>auth="Container"
type="javax.sql.DataSource" />
<resourceparams name="jdbc/WorkshopDB"></resourceparams>
<параметр></параметр>
<имя></имя>фабрика
<value></value>org.apache.commons.dbcp.BasicDataSourceFactory
<параметр></параметр>
<имя></имя>maxActive
<значение></значение>100
<параметр></параметр>
<name></name>maxIdle
<значение></значение>30
<параметр></параметр>
<name></name>maxWait
<значение></значение>10000
<параметр></параметр>
<имя></имя>имя пользователя
<value></value>корень
<параметр></параметр>
<имя></имя>пароль
<значение></значение>
<параметр></параметр>
<имя></имя>имяклассадрайвера
<value></value>com.mysql.jdbc.Driver
<параметр></параметр>
<имя></имя>url
<значение></значение>
Обратите особое внимание на места, выделенные жирным шрифтом. Это отличается от прямой ссылки на JDBC. Если вы правильно настроите китайский язык, в базе данных он будет китайским. Следует отметить, что при отображении страницы данных. также нужна эта строка кода. Следует отметить, что некоторые сотрудники стойки регистрации используют Dreamver для написания кода. При написании формы они меняют его на jsp. Есть одна вещь, на которую следует обратить внимание, — это представление действия в Dreamver. запрос, и вам нужно его отправить, потому что существует два метода отправки JSP: POST и GET, но код, отправленный этими двумя методами, по-прежнему сильно отличается с точки зрения кодировки. Это объясняется позже. </bean:message>< /bean:message>