SQLite encodage UTF-8
J'essaie d'exécuter le script (.read FILE
) qui a des chaînes UTF-8. J'ai utilisé pragma commande:
PRAGMA encoding="UTF-8";
Mais j'obtiens des caractères incorrects.
Si je créer une table et insérer les valeurs par moi-même, tout fonctionne parfaitement. Que dois-je faire pour exécuter le script correctement?
En passant, j'ai vérifié beaucoup de questions et/ou des articles sur stackoverflow et d'autres ressources + lire la documentation. J'ai essayé plusieurs méthodes, par exemple, pour utiliser chcp 65001
dans Windows cmd
puis ouvert sqlite3
dans la fenêtre actuelle. Mais il n'a pas aidé.
- Il y a trois codages vous avez à vérifier: la console de codage, le codage de la
sqlite3
programme est de travailler avec (peut être différent de l'encodage de la console) et à l'encodage de la base de données (exécuterPRAGMA encoding;
à vérifier). Je soupçonne que les chaînes sont déjà mélangés avant d'être presisted par sqlite. Vous pouvez aussi vérifier à l'aide de Python, qui peuvent parler directement avec une base de données sqlite (sqlite3 module). - J'ai changé de windows cmd codage UTF-8
chcp 65001
, puis a changé db encodagePRAGMA encoding="UTF-8";
, puis a changé de nombreuses fois d'encodage de fichier à l'aide de Notepad++. Rien ne fonctionne. Je viens de changer de mauvais caractères à une autre mauvaise charachers. Tout a bien fonctionné avec la base de données Firebird. - Je pense que vous devriez faire un peu plus clair, ce que vous acutally faire (les chaînes qui vous essayez d'insérer, de la langue/les paramètres d'encodage y sont dans votre environnement). J'ai fait un test rapide sur mon allemand Win7 machine et a été en mesure d'insérer Umlaute (aou) correctement sans l'aide de
chcp
(vérifié via python). - J'ai besoin de changle police Lucida console. Mdr. Merci à vous de toute façon.
Vous devez vous connecter pour publier un commentaire.
La
PRAGMA encoding
paramètre ne change pas la façon dont vous utilisez l'API SQLite. Et de l'encodage d'une base de données existante ne peut pas être modifié.Ne l'utilisez pas.
La
sqlite3.exe
shell de ligne de commande ne fonctionne pas avec les caractères UTF-8. (Sauf peut-être dans la dernière version.)Ne l'utilisez pas.
Si vos propres scripts et applications utilisation des chaînes codées en UTF-8, et si vous utilisez un outil de sauf
sqlite3.exe
pour contrôler la DB, alors cela fonctionnera.Tout ce que vous devez faire est de:
Ouvrir cmd et la modification de l'encodage (
chcp 65001
)Exécuter sqlite3.exe à partir de l'actuel windows
Changer d'encodage (
PRAGMA encoding="UTF-8";
)Créer corriger UTF-8 script.