Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > кодировка


Автор: Swatch 13.6.2009, 22:51
Доброго времени суток.

Возникла следующая проблема. Есть БД в MySQL. Когда вывожу текст в программе из базы, получаются крюкозябры. Помогите, пожалуйста!!!

Уже пробовала менять кодировку в БД... не помогает smile 

Автор: Старовъръ 14.6.2009, 10:11
Цитата
Есть БД в MySQL.
Хорошее начало smile
Цитата
Уже пробовала менять кодировку в БД... не помогает
Есть еще кодировка таблиц БД, кодировка соединения, их тоже бы поменять на utf-8.
Кстати, а пробовала заглядывать в БД не через свою программу? Может там и хранятся кракозябры)

Автор: Swatch 14.6.2009, 10:48
В БД заглядываю через EMS SQL Manager, там все норм...

вот код создания БД

Код

CREATE DATABASE `tl_db`
    CHARACTER SET 'latin1'
    COLLATE 'latin1_swedish_ci';


в hibernate.cfg.xml hibernate.connection.charSet определено, как
Код

<property name="hibernate.connection.charSet">latin1</property>


Какие варианты?


Автор: Старовъръ 15.6.2009, 22:42
Ты ж сам указываешь latin1, она предназначена для вывода букв латинского алфавита. Переведи все на UTF-8.

Автор: aliks 18.6.2009, 10:36
Был похожа проблема, Я решил эту проблему следующим образом, попробуй, может поможет.
Поиграйся с кодировками, может что нибудь получиться. Но лучший вариант конечно все переводить на UTF8

Код

    public static String ConvertLatin1ToCP1251(String value) {
        String result = null;
        if (value!=null) {
            try {
                result = new String(value.getBytes("latin1"), "cp1251");
            } catch (UnsupportedEncodingException ex) {
            }
        } else result ="";
        return result;
    }

Автор: VAB 13.11.2010, 07:34
А кодировка исходных файлов *.java влияет на отображение символов? Допустим в базе у меня все строки в UTF-8, я их вытягиваю в JTable и если исходники в UTF-8 то будет правильно, а если они в win1251 - то будут кракозябры. Это бред?

Автор: jk1 13.11.2010, 10:11
Цитата

Это бред? 

 smile  Ваши исходники компилятор превратит в байткод, не зависящий от исходной кодировки исходников. Он-то и будет выполняться, то есть на этапе выполнения кодировка исходников никакой роли не играет.


Автор: Skipy 13.11.2010, 12:09
Цитата(jk1 @ 13.11.2010,  10:11)
Ваши исходники компилятор превратит в байткод, не зависящий от исходной кодировки исходников.

Если честно - зависящий. smile Правда, в данной ситуации это не будет играть роли. Вот тут про это: http://www.skipy.ru/technics/encodings_console_comp.html

Swatch, почитайте вот это: 

http://www.skipy.ru/technics/encodings.html
http://www.skipy.ru/technics/encodings_webapp.html

Автор: jk1 13.11.2010, 12:41
Skipy

отличная статья.  smile  Тем не менее
Цитата


Для того, чтобы исключить проблемы с кодировками при компиляции и консольном выводе, необходимо:

В явном виде указать компилятору кодировку исходника – с помощью опции -encoding или же каким-либо другим способом (в ant и maven есть свои настройки, в средах разработки также можно указать кодировку исходников)
В явном виде установить кодировку консоли


То есть зависит результат не от кодировки исходников, а от всяких инфраструктурных вещей типа указания -encoding или WA на тему кодировки консоли.
Поправьте меня, если я не прав.

Автор: Skipy 13.11.2010, 14:35
Цитата(jk1 @ 13.11.2010,  12:41)
То есть зависит результат не от кодировки исходников, а от всяких инфраструктурных вещей типа указания -encoding или WA на тему кодировки консоли.
Поправьте меня, если я не прав.

В принципе - да. А в рассматриваемой ситуации даже это скорее всего не влияет. Разве что при выводе используется консоль, во что верится слабо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)