Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1379 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML/php/Mysql] Caractere chinois

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XML/php/Mysql] Caractere chinois

n°1905074
Blackdalhi​a
Let's rock !
Posté le 14-07-2009 à 14:46:21  profilanswer
 

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  :D )
 
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  

Code :
  1. $xml .= utf8_encode("\r\t</languages>" );


 
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
mood
Publicité
Posté le 14-07-2009 à 14:46:21  profilanswer
 

n°1905480
Blackdalhi​a
Let's rock !
Posté le 15-07-2009 à 17:43:25  profilanswer
 

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 ?

n°1905567
FlorentG
Posté le 15-07-2009 à 21:02:53  profilanswer
 

Pas besoin d'utf8_encode si la string est déjà en UTF-8

n°1905659
Blackdalhi​a
Let's rock !
Posté le 16-07-2009 à 08:40:21  profilanswer
 

ok
 
comment est ce que je je specifie que le fichier XML que je cree avec php est au format UTF-8 ?

n°1905670
superbob56
Posté le 16-07-2009 à 09:27:29  profilanswer
 

<?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.


---------------
By bob.
n°1905672
Blackdalhi​a
Let's rock !
Posté le 16-07-2009 à 09:36:08  profilanswer
 

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));

n°1906300
Blackdalhi​a
Let's rock !
Posté le 18-07-2009 à 10:23:23  profilanswer
 

marche toujours pas  :cry:  
j'ajoute mon code complet :

Code :
  1. /*****************/
  2. /* xml file init */
  3. /*****************/
  4. $xml= utf8_encode("<?xml version='1.0' encoding='UTF-8' ?>" );
  5. $xml .= utf8_encode("\r<library>" );
  6. $xml .= utf8_encode("\r<dataset name='location_languages'>" );
  7. $xml .= utf8_encode("\r\t<languages>" );
  8. /********************************/
  9. /* connection to MySQL database */
  10. /********************************/
  11. mysql_connect($host,$user,$pass) or die('Impossible to connect to server');
  12. mysql_select_db($bdd) or die('Connected to server but fail to connect to database');
  13. /******************************************************************/
  14. /* GENERAL LOOP ON Location Languages         */
  15. /******************************************************************/
  16. $req  = "SELECT  * FROM `Language_Location`
  17.       LEFT JOIN Languages ON Language_Location.Languages_Language=Languages.Language
  18.       WHERE   Activated='1' AND Locations_idLocation='".$idLocation."'
  19.       ORDER BY DefaultLanguage DESC";
  20. $result  = mysql_db_query($bdd,$req);
  21. while ($val = mysql_fetch_array($result))
  22. {
  23.  $idLanguage   = $val["Language"];
  24.  $LanguageName  = $val["LanguageName"];
  25.  $FlagPicture  = $val["FlagPicture"];
  26.  $xml .= utf8_encode("\r\t\t<language languagename='".htmlspecialchars($LanguageName, ENT_QUOTES)."' idLanguage='".$idLanguage."' FlagPicture='".$flag_directory.$FlagPicture."'/>" );
  27. }
  28. /******************************************************************/
  29. /* XML CLOSING                */
  30. /******************************************************************/
  31. $xml .= utf8_encode("\r\t</languages>" );
  32. $xml .= utf8_encode("\r</dataset>" );
  33. $xml .= utf8_encode("\r</library>" );
  34. print $xml;
  35. $handle = fopen($filename, 'w');
  36. fwrite ($handle, utf8_encode($xml));
  37. fclose($handle);

n°1906303
esox_ch
Posté le 18-07-2009 à 10:31:04  profilanswer
 

Normal,
 
Tu converti $LanguageName via ut8_encode alors qu'il est déjà en ut8 (ligne 33)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1906307
Blackdalhi​a
Let's rock !
Posté le 18-07-2009 à 10:42:39  profilanswer
 

j'ai viré le utf8 encode en ligne 33 :
 

Code :
  1. $xml .= "\r\t\t<language languagename='".htmlspecialchars($LanguageName, ENT_QUOTES)."' idLanguage='".$idLanguage."' FlagPicture='".$flag_directory.$FlagPicture."'/>";


 
ca me donne toujours le meme resultat :
 

Code :
  1. <?xml version='1.0' encoding='UTF-8' ?>
  2. <library>
  3. <dataset name='location_languages'>
  4. <languages>
  5.  <language languagename='Français' idLanguage='FRA' FlagPicture='../resources/img_flags/Flag_FRA.gif'/>
  6.  <language languagename='English' idLanguage='ENG' FlagPicture='../resources/img_flags/Flag_ENG.gif'/>
  7.  <language languagename='Italiano' idLanguage='ITA' FlagPicture='../resources/img_flags/Flag_ITA.gif'/>
  8.  <language languagename='Deutsch' idLanguage='GER' FlagPicture='../resources/img_flags/Flag_GER.gif'/>
  9.  <language languagename='??' idLanguage='CHN' FlagPicture='../resources/img_flags/Flag_CHN.gif'/>
  10. </languages>
  11. </dataset>
  12. </library>


 
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

n°1906308
esox_ch
Posté le 18-07-2009 à 10:46:46  profilanswer
 

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


Message édité par esox_ch le 18-07-2009 à 10:48:03

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 18-07-2009 à 10:46:46  profilanswer
 

n°1906314
Blackdalhi​a
Let's rock !
Posté le 18-07-2009 à 11:19:37  profilanswer
 

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 ...

n°1906510
Blackdalhi​a
Let's rock !
Posté le 19-07-2009 à 17:41:40  profilanswer
 

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 ... :(

n°1908819
Blackdalhi​a
Let's rock !
Posté le 27-07-2009 à 11:17:10  profilanswer
 

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

n°1974810
Blackdalhi​a
Let's rock !
Posté le 18-03-2010 à 10:05:09  profilanswer
 

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 !!!!


Message édité par Blackdalhia le 18-03-2010 à 10:09:04
n°1974952
Blackdalhi​a
Let's rock !
Posté le 18-03-2010 à 16:01:37  profilanswer
 

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 ?

n°1974981
rufo
Pas me confondre avec Lycos!
Posté le 18-03-2010 à 17:30:37  profilanswer
 

regardes le charset par défaut de mysql ou la collation par défaut ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1975076
Blackdalhi​a
Let's rock !
Posté le 19-03-2010 à 06:12:37  profilanswer
 

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 ?  

n°1975096
rufo
Pas me confondre avec Lycos!
Posté le 19-03-2010 à 09:37:25  profilanswer
 

et la collation par défaut, c'est quel charset?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1975442
Blackdalhi​a
Let's rock !
Posté le 20-03-2010 à 02:17:24  profilanswer
 

je viens de rajouter general_ci mais ca change rien

n°1975443
Blackdalhi​a
Let's rock !
Posté le 20-03-2010 à 03:02:39  profilanswer
 

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 ?

n°1975468
rufo
Pas me confondre avec Lycos!
Posté le 20-03-2010 à 12:00:23  profilanswer
 

moi, je les vois dans phpmyadmin. Pour la ligne de commande, ben regardes sur le site de mysql :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1992012
Blackdalhi​a
Let's rock !
Posté le 11-05-2010 à 05:40:38  profilanswer
 

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  :cry: :

Citation :


record : 1 - test 1 charset = latin1
record : 2 - ?? charset = latin1
record : 3 - pr�c�dent fran�ais charset = latin1


 
Mon script php :

Code :
  1. <?php
  2. $link = mysql_connect($host,$user,$pass) or die('Impossible to connect to server');
  3. mysql_select_db($bdd) or die('Connected to server but fail to connect to database');
  4. mysql_query("SET NAMES 'utf8' COLLATE 'utf8_bin'", $link);
  5. $reqMain = "SELECT id, comment FROM test";
  6. $reqResultMain = mysql_db_query($bdd,$reqMain);
  7. while ($valMain = mysql_fetch_array($reqResultMain)) {
  8.  $id   = $valMain["id"];
  9.  $comment = $valMain["comment"];
  10.  echo " record  : $id - $comment ";
  11.  $req = "SELECT CHARSET('".$comment."') AS ch";
  12.  $reqResult = mysql_db_query($bdd,$req);
  13.  while ($val = mysql_fetch_array($reqResult)) {
  14.   echo " charset = ".$val["ch"];
  15.  }
  16.  echo "<br />";
  17. }
  18. ?>


 
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


Message édité par Blackdalhia le 11-05-2010 à 05:41:19
n°1992330
Blackdalhi​a
Let's rock !
Posté le 12-05-2010 à 06:56:23  profilanswer
 

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 ...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XML/php/Mysql] Caractere chinois

 

Sujets relatifs
Problème du connexion à BD Mysql dans un programme Cjdbc avec mysql
serveur Mysql s'arrête[MySQL]Join et max ne donne que une seule ligne de résultat
connecter à une base de données Mysql via ODBC à partir d'un programmePHP/MySQL INSERT INTO en masse qui déraille (oubli de données)
parser un fichier XMLChanger le port de MySQL
configurer mon projet C avec ODBC et Mysqlconfigurer mon projet C avec ODBC et Mysql
Plus de sujets relatifs à : [XML/php/Mysql] Caractere chinois


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR