Les Allergies
Alimentaires
Posez votre question Signaler

Caractere chinois et UTF-8 [Résolu]

Artamos 169Messages postés 5 février 2010Date d'inscription 28 mars 2011Dernière intervention - Dernière réponse le 23 sept. 2010 à 04:05
Bonjour,
Je développe un site multilingue (comprenant le Chinois).
J'utilise une base MySQL 5 entièrement encode en utf8_general_ci, les textes en chinois apparaisse sans problèmes.
Je code mes pages php avec l'entête header('Content-type: text/html; charset=UTF-8');
le problèmes est que lorsque je lis ma base de données, pour le "ç" de français apparait en "�" et les caractères chinois "中文" apparaissent "??".
Lorsque j'utilise la fonction php "encode()", le "ç" est bien ecris, mais toujours pas les caracteres chinois ...
j'ai passer plus de 2h dessus et c'est plus que de raison.
SI quelqu'un peut m'aider ...
d'avance merci
Arta.
Lire la suite 

Caractere chinois et UTF-8 »

15 réponses
Réponse
+4
moins plus
Solution trouvée :

il faut mettre l'encodage de lecture juste a la connexion au serveur :

    $connection = mysql_connect($host,$dbuser,$dbpass);

    if(!$connection)
    {
        die('Unable to establish connection to MYSQL server on ' . $host . ' for user ' . $dbuser);
    }
    else
    { 
        //mysql_set_charset('utf8',$connection); // Only available for (PHP 5 >= 5.2.3)
        mysql_query("SET CHARACTER SET utf8",$connection); // Ensures correct encoding
        mysql_query("SET NAMES utf8",$connection); // Ensures correct encoding
    }


ca marche nickel maintenant,
merci beaucoup pour ton aide Titial69 =)

Artamos
Ajouter un commentaire
Réponse
+1
moins plus
si c'est possible :

http://djini.it/ServiceDjini/test.php?connect=true&id=74&lang=fr
(normalement les paramètres sont en method post mais la je peut pas faire autrement)

Les caractères sont dans la Dropdown List "Langue principale".

il n'y a pas de header ici, mais même avec :
"header('Content-type: text/html; charset=UTF-8');"
ou
"<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>"
ca ne change rien.

si vous trouvez quelque chose j'édifie une statue a votre effigie ;)
Ajouter un commentaire
Réponse
+0
moins plus
Est-ce que tu n'aurais pas une balise meta qui contredit le header() ?
Ajouter un commentaire
Réponse
+0
moins plus
dans ma page, non, mais j'avais pas fait le rapprochement avec le fait que c'est une page intégrer dans une autre. Je vais voir si le header de la page mère ne ferais pas le conflits =)

EDIT : et non, ce n'est pas le cas, qu'il y ai un header ou pas de header (php ou html), l'erreur apparait toujours).
J'ai lu sur un tuto que c'etait du au fait que les données sont interprétées en UTF8 alors qu'ils sont reçus au format ISO de la requête SQL...

ce qui n'est absolument pas censé être le cas oO
Ajouter un commentaire
Réponse
+0
moins plus
Question bete, mais est ce que tes fichiers (fichiers php) ne seraient pas encodés en ISO ou autre par hasard?
Artamos- 9 mars 2010 à 09:22
Ce n'est pas forcement bete. Mais non, j'ai bien verifie sous NotePad++ que mes pages sont bels et biens encode en UTF8.
Ajouter un commentaire
Réponse
+0
moins plus
Alors là c'est bizar, tu aurait pas une url qu'on puisse voir?
Ajouter un commentaire
Réponse
+0
moins plus
Ok, ta page est bien en UTF-8 mais tes données sont en ISO (du coup nom prise en charge du chinois, mais prise en chargre du "ç")

Pour moi le problème vient de ta base qui n'est pas en UTF-8, le "utf8_general_ci" est un interclassement (une table de correspondance spécifique à un jeu de caractères, par exemple, é=e, E=e, è=e...) , mais pas une déclaration de charset.

Il faudrait que tu convertisse ta table en UTF-8, essaie ca :
ALTER TABLE table CONVERT TO CHARACTER SET utf8;


Sauvegarde avant !
Ajouter un commentaire
Réponse
+0
moins plus
arf, ca n'a rien modifier.

Je veux donc recreer la table, mais simplement en mettant "DEFAULT CHARSET=utf8;" dans le create table, ca remet les champs a "utf8_general_ci"

je vais essayer avec "utf8_unicode" ou "utf8_bin" voir ...
Ajouter un commentaire
Réponse
+0
moins plus
non plus, je dois partir, je reessayerais demain d'autres options.
Ajouter un commentaire
Réponse
+0
moins plus
t'y a passé la nuit?

Bon c''était bien la base mysql qui n'est pas en UTF8 alors, par contre je ne comprend pas pourquoi.
Ajouter un commentaire
Réponse
+0
moins plus
hehe, presque.

a l'heure française oui, j'y ai passé la nuit, mais a l'heure chinoise, j'y ai passé la matinée ^^

merci beaucoup
Ajouter un commentaire
Réponse
+0
moins plus
fais :
<? mysql_query("SET NAMES UTF8"); ?>
Artamos- 30 mars 2010 à 11:10
c'est ce que j'ai fais dans la reponse que j'ai donne :

//mysql_set_charset('utf8',$connection); // Only available for (PHP 5 >= 5.2.3)
mysql_query("SET CHARACTER SET utf8",$connection); // Ensures correct encoding
mysql_query("SET NAMES utf8",$connection); // Ensures correct encoding


merci a toi =)
Ajouter un commentaire
Réponse
+0
moins plus
J'ai résolu le problème en utilisant l'hexa, pour ce faire j'ai découvert un outil qui semblent inconnu à beaucoup :

Windows NT4, Windows 2000 ou Windows XP : BabelMapNT_fr.zip [1 094 Ko]
http://hapax.qc.ca/BabelMapNT_fr.zip
Windows 95, Windows 98 ou Windows ME : BabelMap9X_fr.zip [1 089 Ko]
http://hapax.qc.ca/BabelMap9X_fr.zip

Je l'utilise aussi pour le français ce qui supprime tous les problèmes de codage, car un site multilingues est par définition ouvert dans différents pays, ayant différent codage...

En revenche j'ai le problème en javascript, pour l'utilisation de boutons flash :

<script type="text/javascript">
myButton('家','_homeCn.php');
myButton('????','_aboutCn.php');
myButton('Galerie'_GalerieCn.php');
</script>
Uniquement "Galerie" s'affiche...
Si quelqu'un des fois ?...
Ajouter un commentaire
Ce document intitulé « Caractere chinois et UTF-8 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?