2009-09-14 4 views
1

J'ai une base de données Sqlite avec des balises ClipArt, nous traduisons cette base de données en suédois, mais ma requête de base de données ne retourne aucun résultat si les caractères sont anglais. Par exemple, fisk == fish et cela fonctionne parfaitement, mais öst == est mais cela échoue.QSqlQuery avec des caractères internationaux ne retourne pas de résultat

Je construis la requête dans un QString d'un QLineEdit:

sqlStatement += QString(" FileID IN (SELECT TLFileID FROM tblTags " 
      " INNER JOIN tblTagLinks ON tagId = TLTagId " 
      " WHERE tagLanguage LIKE '%1' " 
      " AND (tagName LIKE '%2' OR tagName LIKE '%2s' " 
      " OR tagLangSWEDISH LIKE '%2' " 
      " OR tagLangFINNISH LIKE '%2' " 
      " OR tagLangITALIAN LIKE '%2'))").arg(defaultLanguage, tag); 

puis le convertir en un QSqlQuery:

qryFiles.prepare(sqlStatement); 

if(!qryFiles.exec()) 

Je sais que la base de données a les caractères parce que j'importons et exporter les données au format CSV pour les traducteurs à traduire, en utilisant un outil d'administration Sqlite et Excel.

Dois-je ouvrir la base de données d'une manière spéciale?

J'utilise Qt 4.5.2, Windows XP, VS2008, SQLite 3.5.1

Répondre

1

Je sais que ce serait peut-être évident, mais avez-vous vérifié quel personnage définit votre db et votre application utiliser? Je suppose que vous utilisez le codage Windows natif dans un et UTF8 dans l'autre.

Désolé pour la réponse évidente, mais c'est la cause de la plupart de mes problèmes d'internationalisation.

+0

Que vérifier pour l'encodage de Windows? Serait-ce un paramètre de compilateur? –

+0

@Phil: Vous liez la valeur de la variable de tag dans votre requête. Est-ce que vous définissez la valeur de l'étiquette dans le code ou est-ce qu'elle provient de l'entrée de l'utilisateur? S'il est défini dans le code, il a l'encodage de votre éditeur. S'il est pris de l'utilisateur (gui), alors il a un encodage du système. Je ne sais pas quelle langue Windows vous utilisez mais vous devriez pouvoir google l'encodage correct. – zarzych

+0

Il s'avère que j'utilisais Excel pour créer le fichier csv qui était Latin1, l'outil d'administration SQL que j'utilisais déclarait que les caractères étaient corrects, mais ils n'étaient pas en UTF. J'ai utilisé OpenOffice, sélectionné UTF8 comme valeur d'exportation, importé en utilisant l'outil, les caractères semblaient faux, mais pour mon application Qt cela fonctionne parfaitement. Merci beaucoup. –

Questions connexes