Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кириллица в GWT и MySql, проблемы с запросом 
:(
    Опции темы
SoulSeeker
Дата 11.5.2011, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.7.2008

Репутация: 2
Всего: 2



Пытаюсь реализовать поиск на клиенте по русским символам средствами GWT и MySql. С клиента на сервер строка приходит в нормальном виде, на русском языке. Однако запрос не отрабатывает. В mysql кодировка выставлена в utf-8, строку тоже пробовал перекодировать влоб перед тем, как вставить в запрос. Результата ноль. Что еще можно такого подкрутить, чтобы завести поиск на русском языке?
PM MAIL WWW   Вверх
MisterCleric
Дата 11.5.2011, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Привет.
Попробуй прикрутить такой фильтр:
Код

public class SetCharacterEncodingFilter implements Filter {

    private static final String FILTERABLE_CONTENT_TYPE = "application/x-www-form-urlencoded";

    private static final String ENCODING_DEFAULT = "UTF-8";

    private static final String ENCODING_INIT_PARAM_NAME = "encoding";

    private String encoding;

    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp,
                         FilterChain chain) throws ServletException, IOException {
        String contentType = req.getContentType();
        if (contentType != null && contentType.startsWith(FILTERABLE_CONTENT_TYPE))
            req.setCharacterEncoding(encoding);
        chain.doFilter(req, resp);
    }

    public void init(FilterConfig config) throws ServletException {
        encoding = config.getInitParameter(ENCODING_INIT_PARAM_NAME);
        if (encoding == null)
            encoding = ENCODING_DEFAULT;
    }
}


Плюс тебе на странице насильно браузеру нужно установить кодировку UTF-8:
Код

<meta content='text/html; charset=utf-8' http-equiv="Content-Type"/>



--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
SoulSeeker
Дата 11.5.2011, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.7.2008

Репутация: 2
Всего: 2



MisterCleric, спасибо за фильтр, но у меня, оказывается, проблема с mysql. Строка там оседает как '??????' при препаринге запроса. Делаю set names utf8 перед запросом - не помогает.
PM MAIL WWW   Вверх
Samotnik
Дата 11.5.2011, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



SoulSeeker, через что к БД коннектишься ? 
Если hibernate, то помогает добавление characterEncoding=UTF-8 в конце урла:
Код

hibernate.connection.url=jdbc:mysql://<host>:<port>/database_name?characterEncoding=UTF-8

Если JDBC-ODBC, то старый добрый совет:
Код

// Параметры соединения с базой
Properties connInfo = new Properties();

connInfo.put("user", username);
connInfo.put("password", password);
connInfo.put("charSet", "utf-8");

// Устанавливаем соединение
Connection db = DriverManager.getConnection(dataurl, connInfo);


Это сообщение отредактировал(а) Samotnik - 11.5.2011, 22:21
PM MAIL   Вверх
SoulSeeker
Дата 11.5.2011, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.7.2008

Репутация: 2
Всего: 2



Samotnik, не помогает. Самое интересное, что проблема только в построении запроса. Данные читаются нормально. Вот что у меня прописано в my.cnf:
Код

[mysqld]
init_connect='SET collation_connection = utf8_general_ci' 
init_connect='SET NAMES utf8'
init_connect='SET character_set_client utf8'
init_connect='SET character_set_connection utf8'
init_connect='SET character_set_database utf8'
init_connect='SET character_set_results utf8'
init_connect='SET character_set_server utf8'
init_connect='SET character_set_system utf8'


[mysql]
default-character-set=utf8
default-character-set=utf8 



Это сообщение отредактировал(а) SoulSeeker - 11.5.2011, 22:59
PM MAIL WWW   Вверх
dobrolub
Дата 11.5.2011, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 4
Всего: 16



попробуй с UTF8 (без дефиса)

hibernate.connection.url=jdbc:mysql://<host>:<port>/database_name?characterEncoding=UTF8

см bug: http://bugs.mysql.com/bug.php?id=9206
PM   Вверх
SoulSeeker
Дата 12.5.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.7.2008

Репутация: 2
Всего: 2



Ничего не прокатило :( То вопросы, то иероглифы. UTF8 навтыкал где только можно.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0726 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.