|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 11 ![]() |
Bonjour,
Sur une installation toute fraîche, Apache2 PHP5 et MySQL5 je n'arrive pas à faire fonctionner les fonctions xml_parse ni simplexml_load_string. Mon but est de migrer un CMS qui fonctionnait correctement sur un ancien serveur mais qui plante lamentablement sur cette nouvelle machine. Je trouve beaucoup d'exemples d'utilisation du parser avec des fichiers externes, mais pas grand chose avec une base de données. Le jeu de caractères pour MySQL est UTF-8 Unicode (utf8). Je crée une nouvelle base avec interclassement utf8_general_ci Je crée une table avec un seul champ de type "longtext" et interclassement utf8_general_ci J'insère un enregistrement, et je tape <TEXTE>Des caractères accentués...</TEXTE> Ensuite, en dehors des mysql_connect et mysql_select_db, j'ai dans mon code : Code :
Citation:
J'espère que quelqu'un aura un exemple à me montrer... Merci d'avance ! Mathieu |
|||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Il y a une question un peu similaire dans un topic un peu plus bas.
Il est dit d'aller voir du côté de utf8_decode(). Bonne journée. |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 11 ![]() |
Oui, j'ai vu cette autre discussion, qui ressemble à beaucoup d'autres que j'ai trouvé par google. Mais j'ai bien un utf8_decode à l'appel du parser.
Si j'enlève le décodage utf8 j'ai cet affichage : Citation:
J'ai même lu sur un forum un message de quelqu'un qui disait être parvenu au graal en enchaînant deux utf8_decode ! Bigre, j'ai testé : Citation:
|
||
|
|
00
|
|
|
#4 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Si tu met ceci :
Code xml :
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
00
|
|
|
#5 | |||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 11 ![]() |
non, ça me dit ça :
Citation:
Code :
|
|||
|
|
00
|
|
|
#6 | ||||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 11 ![]() |
Hier j'ai vu que dans le httpd.conf il y avait un
AddDefaultCharset UTF-8 Je l'ai fait mettre en commentaire depuis. J'ai aussi essayé un truc lu dans la doc mysql, avant ma requête select : Code :
Code :
|
||||
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 11 ![]() |
tiens... je viens d'essayer ça :
Code :
Donc je ne pige pas. Ma base est déclarée en utf-8, mon interclassement aussi, le serveur apache ne précise rien, l'encodage système mysql est positionné sur utf8. Si je crée une nouvelle base, en iso cette fois, le problème ne change pas. J'ai lu aussi une astuce qui consiste à changer l'interclassement en passant le type du champ à blob (binaire), puis de le repasser à longtext. Ca me flingue effectivement les caractères au passage, mais le résultat final est le même. Ou alors j'ai mal compris cette manip. Je trouve bizarre que ça soit si compliqué avec ma config. Apparamment personne ne semble avoir de problème (google) avec ça. L'install est toute neuve, une fedora core 6... |
||
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 11 ![]() |
suite à lecture instructive du post plus bas....
Code :
je suis totalement perdu... |
||
|
|
00
|
|
|
#9 | ||||
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 11 ![]() |
OK, pour le fun je viens de faire un truc bizarre, inspiré d'un autre post dans ce forum. Comme il s'agit de migrer une application d'un serveur sur un autre, et que sur l'ancien serveur le parsing xml se passe correctement, je viens de poser sur cet ancien serveur un script qui ne fait qu'extraire le contenu xml de sa table d'origine et un echo de ce contenu.
Sur le nouveau serveur, je récupére ce contenu par un file_get_contents, et le donne à manger à xml_parse, avec un utf8_decode. Mon xml est lu, mais j'ai des ? à la place des accents, que l'entête html contienne un meta charset utf-8 ou iso, et que la déclaration <?xml version soit présente ou non, en utf-8 ou iso. SI je lui donne le flux avec un utf8_encode c'est tout bon, il m'affiche clairement le texte. Je peux même déclarer ma page en ISO, à condition de mettre un utf8_decode dans ma fonction d'affichage de texte. Ca me donne donc ça : Sur le vieux serveur : fichier export-sql.php Code :
Code :
Sur l'ancien je suis en PHP 4.3.11, Apache 1.3.37, Mysql 4.1.14. Le champ concerné est en latin1_swedish_ci. Sur le nouveau serveur, je suis en PHP 5.1.6, Apache 2.2.3, Mysql 5.0.27. J'ai essayé de mettre le champ à toutes sortes d'interclassement. Je ne vois pas du tout quelle variable vérifier, ni quelle procédure suivre... franchement... |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com