2016-08-18 1 views
0

Lors de l'exécution du code ci-dessous, le résultat est 'אבגדה' dans Windows et '?????' sous Linux, il semble que le qry.value(0) (un type QVarient) utilisant un codage defult. Sous Linux j'utilise free.dts et odbc.ini au niveau du piloteQSqlQuery renvoie "???" pour aucune chaîne en anglais

Comment définir QSqlQuery pour que le format de retour soit UTF16?

Quel est le format retourné?

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); 
db.setDatabaseName("..."); //Some valid connection string 

QByteArray ba; 
char* _buffer11; 

if(db.open()) 
{ 
    QSqlQuery qry(db); 
    qry.prepare("Select UTF16 From DataTypes WHERE ID=9"); 

    if(qry.exec()) 
    { 
     QVariantList resultList; 

     while(qry.next()) 
     { 
      resultList << qry.value(0); 
     } 
    } 

    // ... 
} 

Répondre

0

J'ai trouvé la solution, la ligne client charset = UTF-8 doit être ajouté au fichier freetds.conf

[SERVER_1] 
host  = 192.168.192.44 
instance = SQLEXPRESS 
tds version = 8.0 
client charset = UTF-8