Caractere chinois [XML/php/Mysql] - XML/XSL - Programmation
Marsh Posté le 15-07-2009 à 17:43:25
pas d'idée ?
y a t il un parametre a ajuster, soit dans la base de données, soit dans php quand je construis le fichier XML ?
Marsh Posté le 16-07-2009 à 08:40:21
ok
comment est ce que je je specifie que le fichier XML que je cree avec php est au format UTF-8 ?
Marsh Posté le 16-07-2009 à 09:27:29
<?xml version="1.0" encoding="UTF-8"?> au début du fichier.
Et après quand tu écris dedans, soit tes écris des chaînes en utf8 sans conversion (celles qui viennent de ta base) soit tu convertis les chaînes que tu 'génères' en php qui par défaut n'est pas en utf-8 en utilisant utf8_encode.
Marsh Posté le 16-07-2009 à 09:36:08
j'ai mis ca dans mon php :
$xml= utf8_encode("<?xml version='1.0' encoding='UTF-8' ?>" );
mais ca ne fonctionne pas
y a t il une option a definir quand je cree mon fichier :
$handle = fopen($filename, 'w');
fwrite ($handle, utf8_encode($xml));
Marsh Posté le 18-07-2009 à 10:23:23
marche toujours pas
j'ajoute mon code complet :
Code :
|
Marsh Posté le 18-07-2009 à 10:31:04
Normal,
Tu converti $LanguageName via ut8_encode alors qu'il est déjà en ut8 (ligne 33)
Marsh Posté le 18-07-2009 à 10:42:39
j'ai viré le utf8 encode en ligne 33 :
Code :
|
ca me donne toujours le meme resultat :
Code :
|
je me demande si ca ne vient pas de la maniere dont je cree le fichier ou bien quand je me connecte a la base
Marsh Posté le 18-07-2009 à 10:46:46
Mais ta case de donnée elle est en UTF8 ? T'es sûr?
Edit :
Au cas où .. ajoute un 'UTF-8' après le ENT_QUOTES
Marsh Posté le 18-07-2009 à 11:19:37
oui ma base est en utf8_unicde_ci
avec phpMyAdmin je vois clairement les caracteres chinois
J'ai ajouter l utf8 comme tu l'as suggere mais toujours rien ... bizarre : si phpMyAdmin le lis correctement ca veut dire que c'est clairement mon code php qui merdouille ...
Marsh Posté le 19-07-2009 à 17:41:40
personne n'a d'autres idées ?
j'ai vu sur un autre forum qu'il faut s'assurer que tout est en UTF8 : depuis la connection jusqu'a l'ecriture du fichier, mais personne ne dit comment faire ...
Marsh Posté le 27-07-2009 à 11:17:10
Bon j'ai trouvé :
- il faut ajouter mysql_query("SET NAMES 'utf8'" ); juste apres la connection a la base de données pour préciser à MySQL la manière dont elle doit traiter les caractères contenus dans une requête SQL
- j'ai enlever les conversion en UTF8 vue que les données sont déjà en UTF8
Au passage un excellent tutoriel :
http://electron-libre.fassnet.net/utf8.php
Marsh Posté le 18-03-2010 à 10:05:09
Hello
je deterre ce topic ... malheureusement le probleme a resurgit
J ai change de PC, j ai maintenant un PC Chinois (windows en anglais).
Je retrouve le meme probleme....
- ma base est en UTF8
- je mets mysql_query("SET NAMES 'utf8'" ); juste apres la connection
- j utilise quercus a la place de apache, il traite par defaut du UTF8
- dans ma base je mets : 中国, mon code ShortDescription='".htmlspecialchars($Description, ENT_QUOTES) donne un magnifique ??
j essaie un utf8_encode($Description) et un utf8_decode($Description) : meme chose : ??
une idee avant que j apprenne a mon PC a voler ?
Ha oui, ce qui est bizarre : quand je fais un mysql_client_encoding($link) j'obtiens un latin1 !!!!
Marsh Posté le 18-03-2010 à 16:01:37
c est vraiment bizarre que ca marchait sur mon autre PC : y a t il un parametre lie au PC qui pourrait influer sur le type de donnees ?
je me dis que lorsque je modifie les donnees (dans MySQL Admin), si ce aue je rentre au clavier est considere comme du latin1, bien que la base soit en UTF8 les donnees sont finalement en latin1 ... y a t il un moyen de verifier ca ?
Marsh Posté le 18-03-2010 à 17:30:37
regardes le charset par défaut de mysql ou la collation par défaut
Marsh Posté le 19-03-2010 à 06:12:37
ben je viens de regarder a nouveau le my.ini de MySQL :
default-character-set=utf8
y a t il yune ligne de commande pour verifier ?
Marsh Posté le 19-03-2010 à 09:37:25
et la collation par défaut, c'est quel charset?
Marsh Posté le 20-03-2010 à 03:02:39
est ce qu il y a une ligne de commane mysql qui me permettrait de verfier le charset par defait et la colation par defaut ?
Marsh Posté le 20-03-2010 à 12:00:23
moi, je les vois dans phpmyadmin. Pour la ligne de commande, ben regardes sur le site de mysql
Marsh Posté le 11-05-2010 à 05:40:38
j ai toujours ce satane probleme ...
Mon script php me donne le resultat suivant alors que tout est en UTF-8 (Cf fichier de config ci apres :
Citation : |
Mon script php :
Code :
|
Mes fichiers de config des differents elements :
Glassfish / sun-web.xml:
<locale-charset-info>
<parameter-encoding default-charset="UTF-8" />
</locale-charset-info>
Quercus / web.xml:
<init-param>
<param-name>script-encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
MySQL / my.ini:
default-character-set=utf8
default-collation=utf8_general_ci
La Table test a pour charset UTF8 et Collation utf8_general_ci
Marsh Posté le 12-05-2010 à 06:56:23
pas d idee ? apparemment sur certains forum de QUercus, ils parlent de definir de maniere explicite l'utilisation de l'encodage UTF-8 pour javac, mais je ne sais pas comment faire ca ...
Marsh Posté le 14-07-2009 à 14:46:21
Bonjour
j'ai un soucis avec l'affichage de caractere chinois.
A l'aide de mysql, j'insere des traductions en chinois : par exemple 中国 (qui veut dire Chine en chinois pour ceux que ca interesse )
Ma base est encodée en UTF-8.
J'extrais les données a partir d'un programme PHP qui produit un fichier XML en UTF-8 : j'utilise en particulier
Pourtant le fichier produit ne contient pas de caractère chinois : le 中国 devient "??" !!!
qqu'un a-t-il une idée ?
Message édité par Blackdalhia le 18-03-2010 à 15:59:16