LINUX.ORG.RU

[java][mysql] кодировка


0

1

Здравствуйте.
Есть веб-приложение (jsp, сервлеты), БД (MySQL).
Заполняется форма, вводятся данные на русском. При сохранении в БД все кириллические символы (да и не только они) заменяются на знаки вопроса.

Table options:

Character Set: UTF-8 Unicode
Collation: utf8_general_ci
В приложении используется SetCharacterEncoding Filter.
web.xml:
<filter>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <filter-class>
        filters.SetCharacterEncodingFilter
    </filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>ignore</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
    
<filter-mapping>
    <filter-name>SetCharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

В обработчике формы жестко прописываю:

// Configuration.ENCODING : public static final String ENCODING = "UTF-8";
request.setCharacterEncoding(Configuration.ENCODING);
response.setCharacterEncoding(Configuration.ENCODING);

В странице:

<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

И все равно не понимает кириллических символов!
Как решить проблему?

★★★★★

я не знаю этой вашей явы, но знаки вопроса - это только одна возможная причина, кодировка соединения != utf-8

heisenberg ★★ ()
Ответ на: комментарий от heisenberg

При подключении явно указываю characterEncoding=UTF-8.
В отладчике в свойствах соединения стоит UTF-8.
Только вот у PreparedStatement в charEncoding стоит cp1252. Как ее поправить? Или проблема не из-за этогО?

kovrik ★★★★★ ()

Разобрался.
В /etc/mysql/my.cnf везде (в [client], [mysqld_safe], [mysqld], [mysql]) добавил:

default-character-seе = utf8
Теперь и кириллица, и иероглифы, и все-все-все работает.

kovrik ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.