Paradox, Qt и кодировка, проблема с русскоязычным текстом в БД |
Здравствуйте, гость ( Вход | Регистрация )
Paradox, Qt и кодировка, проблема с русскоязычным текстом в БД |
AD |
14.12.2010, 14:45
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Проблема с русскоязычным текстом при вставке в БД. В приложении сделано так:
в функции main().Затем... Есть текстовый файл следующего содержания: Цитата 111000001 Астрономический пункт 112000001 Пункт государственной геодезической сети (ГГС) 113100001 Точка съемочной сети, закрепленная на местности центром 113200001 Точка съемочной сети, не закрепленная на местности центром 114100001 Нивелирный репер, марка 114200002 Нивелирный ход 115100002 ЛИНИИ МЕРИДИАНОВ 115110002 ВЫХОДЫ ЛИНИЙ МЕРИДИАНОВ 116100002 ЛИНИИ ПАРАЛЛЕЛЕЙ 116110002 ВЫХОДЫ ЛИНИЙ ПАРАЛЛЕЛЕЙ 117100002 ВЕРТ.ЛИНИИ ПРЯМОУГОЛЬНОЙ СЕТКИ 117200002 ГОРИЗ.ЛИНИИ ПРЯМОУГОЛЬНОЙ СЕТКИ 117300002 ВЫХОДЫ ВЕРТ.ЛИНИЙ СМЕЖНОЙ ЗОНЫ 117400002 ВЫХОДЫ ГОРИЗ.ЛИНИЙ СМЕЖНОЙ ЗОНЫ 117500002 ВЕРТИК.ЛИН.ПЕРЕСЕЧ.КООРД.ЛИН. 117600002 ГОРИЗ.ЛИН.ПЕРЕСЕЧ.КООРД.ЛИН. Ну и там намного больше таких описаний. При чтении файла делаю следующее:
Так проблема в том, что в БД вместо строки вставляются знаки вопроса. Где и как изменить кодировку? На форуме перед тем, как задать вопрос - порылся. Ответы есть для MySql! Для Paradox строка set character set latin1 не работет. |
|
|
panter_dsd |
14.12.2010, 14:51
Сообщение
#2
|
Жаждущий знаний Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: 3 |
Используй QTextStream и устанавливай кодек ему.
Сообщение отредактировал panter_dsd - 14.12.2010, 14:52 |
|
|
AD |
14.12.2010, 14:53
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
1. Следи за скобками QString line(out.readLine()), 2. Используй QTextStream и устанавливай кодек ему. 1) Не понял. Что не так? 2) QTextStream я и использую. out - данного типа. Какой именно ему кодек устанавливать надо? После чтения строки в дебаге я вижу русский текст. Сообщение отредактировал AD - 14.12.2010, 14:54 |
|
|
panter_dsd |
14.12.2010, 14:56
Сообщение
#4
|
Жаждущий знаний Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: 3 |
1. Да сразу не заметил, что ты определяешь 3 QString. ИМХО, правильнее писать
2.
|
|
|
AD |
14.12.2010, 15:03
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
1. Да сразу не заметил, что ты определяешь 3 QString. ИМХО, правильнее писать
2.
1) Ладно. На счет первого спорить не буду. Считаю, что если можно сделать за 1 шаг, пусть делает за один, чем за три. 2) Так у меня QTextStream итак выводит в русскоязычном варианте. Зачем еще раз определять для него? Попробую конечно, но не думаю, что поможет. 2) Не помогло. |
|
|
panter_dsd |
14.12.2010, 15:10
Сообщение
#6
|
Жаждущий знаний Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: 3 |
Скорее всего это уже к Кьюту отношения не имеет. Посмотри тут тыц
|
|
|
AD |
14.12.2010, 15:33
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Скорее всего это уже к Кьюту отношения не имеет. Посмотри тут тыц А что именно может помочь? Испробовал несколько вещей. Не помогает. |
|
|
Rocky |
14.12.2010, 15:40
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
А может записи в самой БД хранятся в другой кодировке?
---- UPD А сам файл текстовый считывается нормально? В дебаге смотрел на значения? Сообщение отредактировал Rocky - 14.12.2010, 15:41 |
|
|
AD |
14.12.2010, 16:23
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
А может записи в самой БД хранятся в другой кодировке? Думаю, что это понятно из-за самой проблемы. А сам файл текстовый считывается нормально? В дебаге смотрел на значения? Уже говорил! Нормально считывается и в дебаге видел русский текст. Решение получилось. Итак: 1) При чтении файла ставлю кодировку Latin1
При чтении из БД с выбранной строчкой выполняю функцию класса QString toLatin1():
|
|
|
Текстовая версия | Сейчас: 9.11.2024, 2:30 |