![]() |
|
|
![]()
|
|
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Можно ли как-то средствами Qt экранировать кавычки и т.д. ?
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Поиск по разделу рулит, уже поднимался подобный вопрос. Если вкратце, то QSqlQuery::bindValue экранирует нежелательные символы. |
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
JackYF,
Извиниюсь. Забыл написать, что я пользуюсь AddBindValue. Похоже ошибка не в экранировании символов, а в том, что сложные строки QString почему-то не записывааютя полностью. Т.е. от фразы My name is Boris в QTextStream помешается только My. |
|||
|
||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 13 Всего: 181 |
Код в студию -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Такс. Похоже всё-таки дело не в QString, а именно в экранировании кавычек. Там где в тексте встречается ", запрос криво работает. В частности есть такой вот текст:
Вы можете спросить, а каким вообще образом он раскрывает преступления. Ведь, глядя на него, трудно представить, что он может самостоятельно сходить в магазин. Парадокс, однако детектив Монк работает намного продуктивнее, чем полиция Сан-Франциско. Смотрите первую серию третьего сезона сериала "Дефективный детектив". Мистер Монк отправляется покорять Нью-Йорк, попутно расследуя зверское убийство латвийского посла в США А получаю в базе: ". Мистер Монк отправляется покорять Нью-Йорк, попутно расследуя зверское убийство латвийского посла в США. Вот так выполняется запрос:
|
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Экранируется только одиночный апостроф ' превращаясь в двойной. Но вообще если встречается такое: INSERT .... '..."Дефективный детектив"...'
то обычно проблем не возникает. Это сообщение отредактировал(а) SABROG - 6.5.2008, 19:49 |
|||
|
||||
| ssstttuuufff |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Ну я не знаю уже, что пробовать. Капнул глубже. Весь этот текст, который я пытаюсь загнать в БД, я получаю из xml файла. Думал, что-то в парсере не так работает. Но вроде всё работает нормально. Для того текста (см. пример выше) парсер выдаёт в консоль это:
Вроде всё нормально. Притом этот текст я вывожу из уже созданной QString переменной (см. код ниже), а это значит, что текст в ней записан вроде как правильно.
Блин, но почему в базу не заносится тоже самое ?? |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Максимальный размер у колонки в базе данных какой установлен ? Какая база данных MySQL ?
|
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
SABROG,
БД - SQLite3. Поле TEXT без ограничений на размер. |
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
Кстати с латинецей такой лажи нет. Вроде всё нормально в базу пишется.
|
|||
|
||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 13 Всего: 181 |
Какой версии SQLite?
В какой кодировке база? -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
SQLITE 3.5.6
База данных в UTF-8 Таблица:
Запрос
Все отлично занеслось в полной мере. Причем оба варианта и с сылкой на новафильм и без. Возможно действительно косяк с кодировкой, если символы кодируются двубайтовыми значениями и среди них есть символы 0x0, 0x1 и т.п., то база данных может расценить их как конец EOF. Это сообщение отредактировал(а) SABROG - 6.5.2008, 23:14 |
||||
|
|||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
nickless,
UTF-8 |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В какой кодировке xml ? |
|||
|
||||
| ssstttuuufff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.3.2008 Репутация: нет Всего: нет |
SABROG,
так у меня тоже нормально работает. Может быть дело в placeholder'ах ? Может быть надо запросы все делать без bindValue и т.д. ? Добавлено через 52 секунды SABROG, windows-1251 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |