Essayer d'insérer des données de CSV dans la table Firebird dans Qt. DB est en ASCII. Lors de l'insertion des chaînes avec des symboles non-ascii obtenir erreur:Comment supprimer les caractères Unicode dans QString ou convertir en latin1
Cannot transliterate character between character sets
Réglage QSqlDatabase::setConnectOptions("ISC_DPB_LC_CTYPE=UTF8;")
et colonne de conversion en UTF8 (CHARACTER SET UTF8
) ne contribue pas - même erreur. Essayer de supprimer les caractères unicode sans chance ainsi:
QTextCodec *codec = QTextCodec::codecForName("latin1");
QByteArray encodedString = codec->fromUnicode(str);
str = QString(encodedString);
QString::toLatin1()
ne supprime pas les caractères aussi bien. Quelle solution pourrait être ici?
Étrange, 'ALTER TABLE ALTER COLUMN TYPE VARCHAR (x) JEU DE CARACTÈRES UTF8' ne change pas le jeu de caractères de la colonne, reste ASCII. –
'QString' est déjà dans utf-16, votre conversion supprimera tous les caractères ascii non 7 bits et il sera inutile. Quel est votre type de données de sortie de FireBird? Afficher le code, comment vous remplissez votre 'str' première fois. –
Désolé, ce n'est pas clair pour moi, ce que vous voulez réaliser? Vous devez supprimer tous les caractères non-ascii? Cherchez-vous http://doc.qt.io/qt-5/qstring.html#toLatin1? –