|
Publicité | ||||||||||||||||||||||
|
|
#1 |
![]() ![]() |
Bonjour,
Je me trouve confronté comme beaucoup au problème des lettres accentuées entre PHP et MySQL. Quel est le bon choix à faire pour que tout ça fonctionne correctement en français ? Actuellement : - Interclassement pour la connexion MySQL = utf8_general_ci - Interclassement pour els tables de la BDD = utf8_general_ci - Default_charset dans php.ini = UTF-8 - Enregistrement des fichiers de code par Eclipse = UTF-8 J'avais cependant commencé à enregistrer des données dans une table qui était dans un autre interclassement (je ne sais plus lequel). J'ai modifié les données avec accent après avoir changé l'interclassement des tables mais j'ai toujours les lettres accentuées des données issues de cette table qui apparraissent sous la forme d'un point d'interrogation dans un losange noir dans la liste déroulante de ma page générée par PHP. Pourtant, d'une part ces données s'affichent correctement dans PHPMyAdmin et d'autres données accentuées enregistrées via un formulaire PHP de la même appli s'affichent correctement dans la page mais incorrectement dans phpMyAdmin ! Bref, comme beaucoup, je galère avec ces lettres accentuées ! ![]() De plus, je viens de découvrir ici que UTF8-general_ci n'est pas sensible à la casse ('ci' dans le nom = case insensitive ?), ce que je trouve dommage.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! Dernière modification par sabotage ; 16/03/2010 à 11h16. Motif: gros mot |
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
UTF8_general_ci est l'interclassement, c'est à dire la régle utilisée par la comparaison et le classement des données ; tu peux le changer comme tu le souhaites.
Ce qu'il peut te manquer c'est la l'encodage utilisé par mysql pour communiquer avec PHP : http://php.developpez.com/faq/?page=mysql#mysql-utf-8 |
|
|
00
|
|
|
#3 | |||
![]() ![]() |
J'ai bien utf8 dans les pages générées :
Code HTML :
Dans la FAQ, je lis ceci : Citation:
Ca se passe où ce genre de chose ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#4 | ||
![]() ![]() |
J'ai partiellement résolu le problème...
Comme les tables avaient été créées au départ en utf8_unicode_ci, les colonnes déjà alimentées étaient restées dans cet interclassement. J'ai modifié tout ça. Ensuite j'ai ajouté AddDefaultCharset utf-8 dans httpd.conf. J'ai aussi ajouté dans le fichier config.ini de mon appli Zend_Framework ceci : Jusque là, rien de changé dans l'affichage ! Après d'autres recherches, j'ai ajouté ces commandes dans mon controleur qui appelle la vue : Code :
Mais les libellés accentués qui auparavant s'affichaient correctement sont maintenant mal affichés ! Je ne sais plus trop quoi faire !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#5 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 242 ![]() |
Citation:
C'est vraiment une idée comme ça, car ça m'est arrivé.
__________________
Win XP | WampServer 2.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#6 |
![]() ![]() |
Je veux bien mais les libellés des champs de formulaire sont en dur dans le code (avec lettres accentuées) et ce code est enregistré au format UTF-8 par Eclipse.
Si je supprime les deux lignes de code mentionnées dans le message précédent, j'ai les libellés bien affichés mais pas les données et si je les laisse j'ai les données OK mais pas les libellés !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 242 ![]() |
C'est peut être un piège ces 2 fonctions.
Je ne connais pas ZFW, du coup, difficile de t'aider sur ce coup là. Je te donne quand même comment je procède, sait on jamais. De mon coté, tout tient sur 4 choses. - Je défini explicitement à mon éditeur du UTF-8 à chaque création de page - Défini le charset des pages HTML (tu l'as déjà fais, donc c'est bon) - Défini au niveau de Php Code :
header('Content-Type: text/html; charset=UTF-8'); - Au niveau SQL, j'exécute en tout 1er (avant les autres) : Il me semble pas avoir fait plus que ça. A savoir aussi que j'ai la même configuration que toi, du utf8_general_ci.
__________________
Win XP | WampServer 2.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] Dernière modification par RunCodePhp ; 16/03/2010 à 15h25. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com