Как заставить UTF-8 работать в веб-приложениях Java? - PullRequest
360 голосов
/ 26 сентября 2008

Мне нужно, чтобы UTF-8 работал в моем веб-приложении на Java (сервлеты + JSP, среда не использовалась) для поддержки äöå и т. Д. Для обычного финского текста и кириллицы, например ЦжФ, для особых случаев.

Моя настройка следующая:

  • Среда разработки: Windows XP
  • Производственная среда: Debian

Используемая база данных: MySQL 5.x

Пользователи в основном используют Firefox2, но также для доступа к сайту используются Opera 9.x, FF3, IE7 и Google Chrome.

Как этого добиться?

Ответы [ 14 ]

0 голосов
/ 15 ноября 2015

Еще один момент, который не был упомянут, связан с сервлетами Java, работающими с Ajax. У меня есть ситуации, когда веб-страница получает текст utf-8 от пользователя, отправляющего его в файл JavaScript, который включает его в URI, отправленный сервлету. Сервлет запрашивает базу данных, захватывает результат и возвращает его в виде XML в файл JavaScript, который его форматирует, и вставляет отформатированный ответ в исходную веб-страницу.

В одном веб-приложении я следовал инструкциям ранней книги по Ajax для включения JavaScript в конструкцию URI. В примере из книги использовался метод escape (), который, как я обнаружил (трудный путь), неверен. Для utf-8 вы должны использовать encodeURIComponent ().

Мало кто, кажется, катит свой собственный Ajax в эти дни, но я подумал, что мог бы также добавить это.

0 голосов
/ 21 июня 2012

В моем случае отображения символа Unicode из пакетов сообщений мне не нужно применять раздел «Кодировка страницы JSP» для отображения Unicode на моей странице jsp. Все, что мне нужно, это раздел "CharsetFilter".

0 голосов
/ 20 июля 2011

У меня похожая проблема, но в именах файлов я сжимаю с помощью Apache Commons. Итак, я решил это с помощью этой команды:

convmv --notest -f cp1252 -t utf8 * -r

это работает очень хорошо для меня. Надеюсь, это кому-нибудь поможет;)

0 голосов
/ 11 декабря 2009

Если вы указали в пуле соединений (mysql-ds.xml), в своем коде Java вы можете открыть соединение следующим образом:

DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Connection conn = DriverManager.getConnection(
    "jdbc:mysql://192.168.1.12:3308/mydb?characterEncoding=greek",
    "Myuser", "mypass");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...