|
|
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Всем привет, прошарил форум, не могу подходящий топик найти, решил написать: Есть JTable, JTableModel. Задача: 1.Внести через форму JFrame русские буквы в БД MS Access. 2.Сделать запрос в БД и вытащить эти данные в JTable. Вот что я пробовал: 1. Добавляю запись в БД: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 2. Принимаю данные из БД в JTableModel Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Результат: ???????? Вопрос, в чем моя ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2014, 10:03 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Мне помог этот способ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2014, 10:58 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Спасибо ссылка помогла, теперь вроде все ок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2014, 13:13 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Поспешил, когда я добавляю запись через JFrame русский текст то отображается нормально, но этот же клиент запустить у дрогого чела то там опять вопросительные знаки. В чем причина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2014, 15:17 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Как я понял проблема так и осталась. Настройку в Connection.getConnection(); сделал как вы подсказали, установил cp1251. На клиенте: JTableModel extends AbstractTableModel - тут при примеме текста тоже указал: Код: java 1. 2. 3. 4. 5. 6. 7. Но зарисовке JTable-а опять вопросительные знаки. Получается я вставляю данные в неизвестном мне формате т.к у Java своя кодировка по умолчанию, русский текст проходит через JDBC-ODBC connection в кодировке ср1251 и записывается в MS Access. Потом я делаю выборку из таблицы и говорю JTableModel-у что кодировка будет cp1251 но все тщетно. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 08:10 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Вообщем прикол в том что пользователь добавляет запись и считывает нормально и русские буквы отображаются отлично, беру ту же программу и делаю выборку той же записи на другом компе а там уже вопросительные знаки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2014, 08:11 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Рецепты очень простые. Уберите кириллицу из кода, если не можете всё правильно настроить на UTF. Никогда не используйте String.getBytes() и new String() для исправление кодировки. Это костыль. Нужно исправить кодировку, там где она сломана, а не пытаться сломать её ещё раз вернув в изначальное состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 09:48 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidа там уже вопросительные знакиМожет дело в региональных настройках системы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 12:19 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
А как мне быть без кирилицы? по ТЗ там поиск идет по русским буквам и словам... Вместо того чтобы читать натацию про getbytes, new string лекарство предложили бы как выйти из такой ситуации если есть примерчик. LiQuid, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 16:15 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidА как мне быть без кирилицы? ? Я говорил о кириллице в коде. Если вы не можете настроить IDE и компилятор на UTF, то используйте native2ascii. LiQuidпо ТЗ там поиск идет по русским буквам и словам... А ТЗ ничего не говорит о том что русские буквы и слова должны быть в .java файлах? LiQuidВместо того чтобы читать натацию про getbytes, new string лекарство предложили бы как выйти из такой ситуации если есть примерчик. Чего примерчик? Приложите код минимального примера на котором воспроизводится проблема и я покажу как эту проблему решить. А то сразу примерчик подавай. Код за вас напиши. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 16:28 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuid, Так же стоит проверить MS Access и настроить работу с ним так, чтобы перекодировки не требовались. Вы бы хоть определились для начала проблема у вас в JTable или в MS Access. А то в теме написано одно, в сообщении другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 16:55 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Я же привел пример, те части кода где происходит преобразование: В данный момент так: Код: java 1. 2. 3. 4. 5. 6. 7. В других местах я убрал преоразование. 1. Пользователь добавляет запись. 2. Делает выборку по той же добавленной записи и видит русские буквы нормально. 3. Я со своего компа запускаю программу и вижу вопросительные знаки по той же добавленной записи. 4. Открываю MS Access БД там тоже иероглифы в ячейке где русский текст. Добавление записи происходит так (Буду просто писать компоненты): JTextField.getText() передает текст на русском в Statement.executeUpdate (instert into...) Делаю выборку той же записи: ResultSet rs = _statement.executeQuery (Select * from...) String TitleRus = rs.getString("RusTitle"); Создаю класс: Код: java 1. 2. там в методе указываю: Код: java 1. 2. 3. 4. 5. 6. 7. В главном классе указываю: Код: java 1. 2. 3. 4. и т.д.. Где мне сделать преобразование в UTF-8? Я уже пробовал в JTextField-е пробовал при принятии через return переменную TitleRus, не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 07:29 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuid, Вы снова намешали всё в кашу. Не должно быть никаких "преобразований". Текст из MS Access должен читаться нормально. Этого у вас и не происходит. Соответсвенно нужно ковырянть настройки доступа к Access. Или попробовать jackcess, например, вместо ODBC-JDBC моста. А Swing к проблеме отношения не имеет. Разберитесь сначала с вашей проблемой доступа к данным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 09:34 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Что вы подразумеваете под "Соответсвенно нужно ковырянть настройки доступа к Access"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 11:30 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidЧто вы подразумеваете под "Соответсвенно нужно ковырянть настройки доступа к Access"? Давайте с начала. Вы вот это зачем делаете? Код: java 1. 2. Уберите. И после этого опишите свою проблему. Что именно не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 11:42 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Я все убрал, сейчас в коде нет преобразования. Просто приложение, JDBC-ODBC подключение. Проблема: Есть Компьютер 1 Компьютер 2 Добавляем запись с кирилицей из Компьютер 1 используя написанное мною приложение в БД Аксес. Делаем выборку из БД Аксес используя мое приложение и в JTable кирилица отобразилась нормально. Делаем выборку той же записи используя мое приложение из Компьютер 2. Кирилица показывает ????? т.е каждый комп видит нормально только ту кирилицу которая была добавлена через этот комп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 12:31 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
А при просмотре в MS Access обе базы нормальные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 12:36 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Открыл Базу с двух компов, в обоих компах в самой базе русский текст отобразился нормально. Только что добавил со своего компа текст, через свое приложение вытащил, кирилица отобразила нормально. Пошел к другому компу, вытащил эту же запись а там уже ????? Вот так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 13:17 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Повторите эксперимент с connInfo.put("charSet", "UTF-8"); или connInfo.put("charSet", "UTF8"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 13:27 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Поставил: connInfo.put("charSet", "UTF-8"); и connInfo.put("charSet", "UTF8"); Добавил со своего компа запись через приложение и открыл запись через свое приложение, текст кирилица отобразилась корректно. Открыл ту же запись с другого компа, вместо кирилицы вопросительные знаки. Теперь в самой БД на обоих компах вместо кирилицы иероглифы (НЕ вопросительные знаки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 13:43 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
т.е connInfo.put("charSet", "UTF-8"); - одну запись connInfo.put("charSet", "UTF8"); - тоже одну запись добавлял для проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 13:44 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidТеперь в самой БД на обоих компах вместо кирилицы иероглифы (НЕ вопросительные знаки) Так это уже достижение. Значит мы на верному пути. "Вопросительные знаки" это полная потеря данных. А вот "иероглифы" это конкретно результат использования, обычно, 2х разных кодировок при записи и чтении. 1) Опубликуйте оригинальный текст и полученые "иероглифы" сюда. А так же уточните как конкретно они получены. Например "ввели текст в Swing и записали через JDBC в Access". 2) Поэксперементируйте ещё с параметром charSet: windows-1251 cp866 IBM866 ISO-8859-1 ISO8859_1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 13:52 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Вот иероглифы (Из самой таблицы в MS Access т.е не через моек приложение): Оригинал: Тест русский 1 в БД: Тест СЂСѓСЃСЃРєРёР№ 1 Текст добавлял через текст в Swing (JTextField) и записал через JDBC в Access А по второму пункту щяс буду эксперементировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 14:09 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidОригинал: Тест русский 1 в БД: Тест СЂСѓСЃСЃРєРёР№ 1 Это UTF-8 прочитаный как cp1251. Я бы поэксперементировал со свойством charSet и вариантами написания CP1251. Потому что драйвер отправил данные в UTF, а база прочитала как 1251. Значит нужно драйвер попросить отправить в 1251. LiQuidТекст добавлял через текст в Swing (JTextField) Сколько нужно повторить что Swing к проблеме отношения не имеет, чтобы вы в это поверили? LiQuidи записал через JDBC в Access Через JDBC-ODBC мост. И ODBC здесь дополнительный слой как возможный источник ошибок. Надо учитывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 14:26 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Кирилица в БД на обоих компах отображается так: windows-1251 Тест 1 cp866 - ’Ґбв 2 IBM866 - ’Ґбв 3 ISO-8859-1 - ???? 4 ISO8859_1 - ???? 5 На клиентской программе все кодировки показали вопросительные знаки Создавал *.jar файл для каждой кодировки отдельно и делал запрос в БД и смотрел как на JTable-е нарисуется кирилица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 14:31 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidКирилица в БД на обоих компах отображается так: windows-1251 Тест 1 Проблема решена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 14:34 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Проблема не решена, потому что в БД отображается корректно а когда я делаю через клиента запрос то в JTable-е все еще ??????. У меня же проблема не с MS Access как там отображается русский, а в самом приложении которое я написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 14:40 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidПроблема не решена, потому что в БД отображается корректно а когда я делаю через клиента запрос то в JTable-е все еще ??????. То есть запрос вернул нормальный текст, а в JTable фигня? LiQuidУ меня же проблема не с MS Access как там отображается русский, а в самом приложении которое я написал. Проблема в том как JDBC-ODBC и ODBC драйвера читают ваш файл. Если запрос вернет нормальный текст, то и JTable покажет нормальный текст. Попробуйте добавить в параметры запуска приложения -Dfile.encoding=cp1251 Напишите небольшой тест без GUI, который только работает с базой и ничего больше. Попробуйте, наконец, Jackcess. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 15:17 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Чтобы использовать jacckess мне придется в коде все менять? К примеру я вижу что там вместо Connection conn = DriverManager.getConnection используется вообще Database Объект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 05:26 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Да, запрос возвращает нормальный текст а в JTable вопросительные знаки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 05:39 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Попробовал без GUI, в System.out.println из БД вернул нормальный текст в консоль. Пошел ту же прогу запустил на другом компе и вытащил ту же запись, а там уже ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 05:45 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
А вот текст который был добавлен с другого компа через мою прогу, в БД выглядит так: Àêò ïðîâåðêè ñîñòîÿíèÿ ðåãóëèðóåìîãî æåëåçíîäîðîæíîãî ïåðååçäà íà 7êì. ÏÊ 10, 17 êì. ÏÊ 5 У меня отображается как ???????? А на том компе откуда текст был добавлен нормально показал. Такое ощущуние что причина в региональных настройках. У нас тут везде Windows 7 Eng, т.к контора американская. Хотя есть MUI но не у всех он установлен. Это может повлиять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 05:52 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Все, нашел проблему. Во всем был виновата настройка самой винды, там стояла English (United States) а у меня Russian(Russia) теперь кирилица под ср1251 показывает нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 08:42 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidÀêò ïðîâåðêè ñîñòîÿíèÿ ðåãóëèðóåìîãî æåëåçíîäîðîæíîãî ïåðååçäà íà 7êì. ÏÊ 10, 17 êì. ÏÊ 5 Это обратная проблема. Cp1251 распарсился как UTF-8. LiQuidУ меня отображается как ???????? Потому что где-то этот текст снова конвертировался в UTF-8 и стал совершенно не читаемым. LiQuidТакое ощущуние что причина в региональных настройках. У нас тут везде Windows 7 Eng, т.к контора американская. Хотя есть MUI но не у всех он установлен. Это может повлиять? Ну, так и есть. Очевидно что две винды разные. -Dfile.encoding уже пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 09:33 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidВсе, нашел проблему. Во всем был виновата настройка самой винды, там стояла English (United States) а у меня Russian(Russia) теперь кирилица под ср1251 показывает нормально. Да, но какое решение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 09:34 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Решение такое: Открываем Control Panel - Region and Language - Administrative - Change System Locale там ставим Russian(Russia) как показано на Print Screen-е, в программном коде: Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 12:12 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
LiQuidРешение такое: Открываем Control Panel - Region and Language - Administrative - Change System Locale там ставим Russian(Russia) И так будет делать лично у каждого пользователя кто пользуется программой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 12:17 |
|
||
|
Проблемы с кирилицей в JTable
|
|||
|---|---|---|---|
|
#18+
Придется у каждого пользователя делать так. Благо пользователей около 10 чел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2014, 14:34 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2127292]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
213ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 571ms |

| 0 / 0 |
