Как я могу обрабатывать строки в кодировке UTF-8 в моем сервлете - PullRequest
2 голосов
/ 23 июня 2011

После четырехчасовых поисков я должен сдаться и спросить вас, ребята.У меня есть очень простая форма, которая будет принимать входные данные и действовать, записывать ее в мою базу данных Oracle (которая поддерживает UTF-8).

<form action="test.jsp" method='GET' accept-charset="UTF-8">
    <label for='NAME'>Name</label><input type="text" id="NAME" name="NAME"/>
    <button type="submit">Submit</button> 
 </form>

Все, что я хочу сделать, - это форма, чтобы иметь возможностьпринимать символы, такие как é или и сохранять их без изменения кодировки.

Я уже пробовал (и комбинировал) варианты, такие как настройка

request.setCharacterEncoding("UTF-8");

или создание новой строки с параметром кодирования:

new String(request.getParameter("NAME").getBytes(), "UTF-8")

, но он всегда заканчивается в базе данных следующим образом: �?��?? (входные данные: 收藏)

Любая помощь по этому вопросу будет принята с благодарностью.

Ответы [ 2 ]

6 голосов
/ 23 июня 2011

В Tomcat server.xml добавьте атрибут URIEncoding="UTF-8" к вашему Connector следующим образом:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>

Документация заявляет:

Это определяет кодировку символов, используемую для декодирования байтов URI, после% xx декодирования URL.Если не указано, будет использоваться ISO-8859-1.

Полезный (слегка связанный) SO пост можно найти здесь .

0 голосов
/ 23 июня 2011

Вы смотрели в отладчике, как выглядит строка перед вставкой в ​​базу данных в Java?Если это не перепутано там, это - функция импорта в базу данных.Какой wprapper или утилиту вы там используете?

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