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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с кодировкой IntelliJ Idea, Проблемы с кодировкой проекта 
:(
    Опции темы
Сонечка
Дата 27.3.2012, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



При запуске процедуры добавления в базу (попытка запихнуть в нее содержание в русской раскладке) выдается следующее сообщение

Код

SEVERE: Incorrect string value: '\xD0\xA1\xD0\x9D\xD0\x93' for column 'region' at row 1
Exception in thread "AWT-EventQueue-0" org.hibernate.exception.GenericJDBCException: could not insert: [StateTable]


Контент вводится даже не из пользовательского интерфейса, а просто из массива. При этом, если поменять раскладку на английскую, все нормально. Если в базу из консоли вводить значения в русской раскладке, тоже все нормально.

Появилось это после того, как в конфигурационный файл hibernate была добавлена строка:    
Код

<property name="hibernate.connection.characterEncoding">UTF-8</property>

До этого добавленное просто хранилось иероглифами.
В настройках проекта тоже значится кодировка UTF-8.
user posted image
В чем может быть дело? Есть еще какие-то настройки кодировки в идее, о которых я не знаю?(
PM MAIL   Вверх
Сонечка
Дата 27.3.2012, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Может русские слова надо как-то выделять, чтобы в юникоде они не казались метасимволами? smile 


PM MAIL   Вверх
Старовъръ
Дата 27.3.2012, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну а в дебаге ты как видешь эти символы? Если нормально, то значит соединение с БД шалит. Попробуй указать в параметрах соединения:
jdbc:mysql://localhost/database?characterEncoding=UTF-8
PM MAIL WWW   Вверх
Сонечка
Дата 28.3.2012, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Старовъръ @ 27.3.2012,  22:27)
Ну а в дебаге ты как видешь эти символы? Если нормально, то значит соединение с БД шалит. Попробуй указать в параметрах соединения:
jdbc:mysql://localhost/database?characterEncoding=UTF-8

Очевидно вот они, символы '\xD0\x9E\xD0\x9E\xD0\x9D' . Вплоне себе юникодовые%) Они такими должны быть?
Код

SEVERE: Incorrect string value: '\xD0\x9E\xD0\x9E\xD0\x9D' for column 'orgName' at row 1


Параметры соединения в конфигурационном файле. Там есть строка
 <property name="hibernate.connection.characterEncoding">UTF-8</property>. Разве ее не достаточно?
PM MAIL   Вверх
Сонечка
Дата 28.3.2012, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Поменяла 
Код
 jdbc:mysql://localhost/hr
 
на 
Код
 jdbc:mysql://localhost/hr?characterEncoding=UTF-8

Ничего не изменилось((
PM MAIL   Вверх
Pawl
Дата 28.3.2012, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Сонечка @  28.3.2012,  12:53 Найти цитируемый пост)
Ничего не изменилось((

Попробуйте у себя в проекте использовать фильтр
Код

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

//encoding-filter
public class SetCharacterEncodingFilter implements Filter {
    protected String encoding = "UTF-8";
    protected FilterConfig filterConfig;

    public void destroy() {
        encoding = null;
        filterConfig = null;
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding(encoding);
        chain.doFilter(request, response);
    }

    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
        if (filterConfig.getInitParameter("encoding") != null) {
            this.encoding = filterConfig.getInitParameter("encoding");
        }
    }
}

и пропишите его в web.xml приложения:
Код

    <filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <servlet-name>action</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>

У меня фильтр прописан после описания сервлета
Код

<servlet>...</servlet>

Описать фильтр можете, как у меня, а вот маппинг у Вас будет свой.


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Старовъръ
Дата 29.3.2012, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сонечка, если ты в дебаге такое видешь, то нет, они должны быть обычными символами. В таком случае проблема не с работай с базой данных, а в том как ты создаешь эти строки. Если приведешь кусок кода, то возможно что-то прояснится. Кстати, а ты каким-то инструментом для сборки пользуешься? Может это не IDE виновата.. Ну и еще одно - может файл был не в той кодировке до того, как ты поставила эти параметры? В таком случае в пункте File есть пункт про перевод открытого файла в такую-то кодировку.
Pawl, фильтры и сервлеты не причем, присмотрись к первому посту, ТС говорит, что строки создаются прям в коде.
PM MAIL WWW   Вверх
Pawl
Дата 29.3.2012, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Старовъръ @  29.3.2012,  00:30 Найти цитируемый пост)
Pawl, фильтры и сервлеты не причем, присмотрись к первому посту, ТС говорит, что строки создаются прям в коде.

Да, пардон, действительно был невнимателен! Тогда да, необходимо сами исходники посмотреть. И еще, попробуйте database url оформить так:
Код

jdbc:mysql://localhost/hr?useUnicode=true&characterEncoding=utf8&characterSetResults=utf-8



--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
Сонечка
Дата 29.3.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Pawl @ 29.3.2012,  08:06)
Цитата(Старовъръ @  29.3.2012,  00:30 Найти цитируемый пост)
Pawl, фильтры и сервлеты не причем, присмотрись к первому посту, ТС говорит, что строки создаются прям в коде.

Да, пардон, действительно был невнимателен! Тогда да, необходимо сами исходники посмотреть. И еще, попробуйте database url оформить так:
Код

jdbc:mysql://localhost/hr?useUnicode=true&characterEncoding=utf8&characterSetResults=utf-8

Если написать так, то 
Код

SEVERE: Error parsing XML: hibernate.cfg.xml(14)


А вот поменять кодировку файла почему-то в идее не получается, ибо Encoding неактивно. smile  Причем ни в одном файле проекта.
Преобразовала в Notepad++ в utf8. Теперь у меня следующее
Код

illegal character: \65279


Совсем ничего не понимаю

Добавлено через 5 минут и 9 секунд
У файла кодировка UTF8 без BOM
PM MAIL   Вверх
Сонечка
Дата 9.4.2012, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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