2 votes

Difficulté à gérer l'encodage dans SQLite

J'essaie d'obtenir des informations à partir d'un fichier SQLite, et lorsque je lance une requête, les informations sont renvoyées avec un encodage ASCII. J'utilise le code ci-dessous pour mettre les informations renvoyées dans une chaîne de caractères.

[NSString stringWithCString:(char *)sqlite3_column_text(compiledStatement, 2) encoding:NSASCIIStringEncoding];

Lorsque j'essaie d'utiliser le codage UTF8 pour mettre les informations renvoyées dans une chaîne de caractères, cela ne fonctionne pas. Le code ci-dessous est utilisé dans l'application actuellement sur la boutique.

[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];

La chaîne est nulle. Comment puis-je convertir le fichier SQLite pour qu'il soit encodé avec UTF8 ? La version actuelle de l'application sur la boutique en ligne utilise le dernier code ci-dessus. Je dois donc trouver un moyen de convertir le fichier, au lieu de modifier le code dans l'application.

1voto

Parag Bafna Points 10462

Vous pouvez utiliser const void *sqlite3_column_text16(sqlite3_stmt*, int iCol); avec stringWithCharacters:length : (UTF16)

const unichar *text = sqlite3_column_text16(_sqlite_stmt, columnIndex);
if (text) {
   NSUInteger length = sqlite3_column_bytes16(_sqlite_stmt, columnIndex)/sizeof(unichar);
   article = [NSString stringWithCharacters:text length:length];
}

0voto

Samkit Jain Points 1793

Essayez ceci :

char *title = (char *)sqlite3_column_text(compiledStatement, 2);
NSString *str = [NSString stringWithUTF8String:title];

Cela fonctionne bien pour moi !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X