Caractere chinois et UTF-8
Résolu
Artamos
Messages postés
165
Date d'inscription
Statut
Membre
Dernière intervention
-
Claude -
Claude -
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.
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.
A voir également:
- Caractere chinois et UTF-8
- Clé windows 8 - Guide
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Mixcraft 8 - Télécharger - Création musicale
13 réponses
Solution trouvée :
il faut mettre l'encodage de lecture juste a la connexion au serveur :
ca marche nickel maintenant,
merci beaucoup pour ton aide Titial69 =)
Artamos
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
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 ;)
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 ;)
Est-ce que tu n'aurais pas une balise meta qui contredit le header() ?
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Question bete, mais est ce que tes fichiers (fichiers php) ne seraient pas encodés en ISO ou autre par hasard?
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 :
Sauvegarde avant !
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 !
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 ...
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 ...
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.
Bon c''était bien la base mysql qui n'est pas en UTF8 alors, par contre je ne comprend pas pourquoi.
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
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
c'est ce que j'ai fais dans la reponse que j'ai donne :
merci a toi =)
//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 =)
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 ?...
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 ?...