|
|
|
Проблемы с кирилицей в 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 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=177&tid=2127292]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 366ms |

| 0 / 0 |
