J'ai un petit problème avec une application php-gtk qui continue à fonctionner dans des chaînes non-utf8, j'ai trouvé que le problème est dans la connexion à la base de données, même si la base de données est supposée être en UTF-8. J'ai essayé avec le "SET CHARACTER SET utf8" (façon MySQL) et le "SET NAMES UTF8" et rien ne se passe (il n'y a aucune information sur aucune de ces commandes dans la page "Query Language Understood by SQLite " non plus, donc Je ne suis pas surpris à ce sujet). PD: Peut-être que la connexion est déjà en UTF-8 et que les données ne le sont pas, mais s'il existe un moyen de changer le codage de la connexion, cette question serait toujours utile.Comment changer le codage de caractères d'une connexion PDO/SQLite en PHP?
7
A
Répondre
8
Autant que je peux dire, SQLite only has one setting for charset, qui est sur un niveau par base de données. Vous ne pouvez pas modifier l'encodage sur la connexion.
L'API C a two different ways pour ouvrir une connexion, soit UTF-8 ou UTF-16. Je m'attendrais à ce que le module SQLite de PHP (et donc PDO) utilise simplement la version UTF-8. Si c'est correct, je m'attendrais à ce qu'une connexion SQLite soit toujours UTF-8. Cela signifie que vous devez encoder/décoder manuellement les chaînes avec utf8_encode/utf8_decode.
Voir aussi: http://www.alberton.info/dbms_charset_settings_explained.html
Questions connexes
- 1. Comment changer le codage des caractères de XmlReader
- 2. Codage de caractères SOAP
- 3. Modifier le codage des caractères
- 4. File.Copy et le codage de caractères
- 5. Codage de caractères confusion!
- 6. Codage de caractères pour les caractères thaïs
- 7. Codage de caractères CSS @charset
- 8. Comment détecter le codage du jeu de caractères?
- 9. question sur le codage de caractères dans le Web
- 10. Quel codage est-ce ... et comment vous échapper en php?
- 11. Lutter contre l'envie de changer de projet pendant le codage?
- 12. Comment faire pour changer le codage Latin1-UTF8 en C++ (peut-être avec Boost)?
- 13. Changer le signe d'un nombre en PHP?
- 14. Comment changer le type de contenu en PHP?
- 15. Codage de caractères javascript externe sur Webshpere
- 16. Algorithme de détection de codage de caractères
- 17. Conversion de codage en Java
- 18. Définition du codage de caractères avec le paramètre de demande
- 19. Comment changer le codage de texte en iso-8859-1 dans Visual Studio 2008
- 20. Problème de codage avec les caractères nordiques
- 21. problèmes de codage de caractères lors de la lecture des fichiers XLS avec PHP
- 22. Codage de caractères XSLT - entité non définie
- 23. comment changer le codage de fichier source dans le projet csharp (visual studio/msbuild machine)?
- 24. Traitement des caractères spéciaux en C (codage UTF-8)
- 25. côté serveur comprend et le codage des caractères
- 26. changer mime type de sortie en php
- 27. quel est le codage?
- 28. Pratique de codage: comment éviter le codage dur?
- 29. Comment changer le délai d'attente sur une connexion flash.net.net?
- 30. Caractères cyrilliques dans le json_encode de PHP
j'avais découvert que « SQLite est pas particulièrement sur le texte qu'il reçoit et est plus qu'heureux de traiter des chaînes de texte qui ne sont pas normalisées ou même bien formé UTF-8 programmeurs qui veulent. pour stocker IS08859 les données peuvent faire ... "Soo le texte était originairement en ISO85 (quelque chose) – levhita
J'ai suivi votre conseil et ajouté quelques utf8_encodes (merci les dieux de la programmation pour OOP) donc tout est utf8 depuis le début. Ma base de données principale a été recréée en UTF8, et je viens d'ajouter ces lignes pour coupler mon système avec certaines bases de données plugin. – levhita
Dans ce cas, vous devrez utiliser utf8_decode lors de la récupération des données. Tout cela n'est nécessaire que si vous utilisez le jeu de caractères par défaut de PHP (ISO-8859-1) en interne. Pensez à utiliser UTF-8 à travers votre système, auquel cas vous n'avez rien à coder (Oui, c'est déroutant). – troelskn