Caractere chinois et UTF-8

Résolu/Fermé
Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 - 8 mars 2010 à 06:34
 Claude - 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.
A voir également:

13 réponses

Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
10 mars 2010 à 05:04
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
7
Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
9 mars 2010 à 10:20
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 ;)
1
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 504
Modifié par avion-f16 le 8/03/2010 à 17:37
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.
0
Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
9 mars 2010 à 04:18
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Titial69 Messages postés 259 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 11 mars 2010 20
9 mars 2010 à 09:19
Question bete, mais est ce que tes fichiers (fichiers php) ne seraient pas encodés en ISO ou autre par hasard?
0
Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
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.
0
Titial69 Messages postés 259 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 11 mars 2010 20
9 mars 2010 à 09:49
Alors là c'est bizar, tu aurait pas une url qu'on puisse voir?
0
Titial69 Messages postés 259 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 11 mars 2010 20
9 mars 2010 à 11:14
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 !
0
Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
9 mars 2010 à 11:31
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 ...
0
Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
9 mars 2010 à 11:42
non plus, je dois partir, je reessayerais demain d'autres options.
0
Titial69 Messages postés 259 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 11 mars 2010 20
10 mars 2010 à 08:50
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.
0
Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
10 mars 2010 à 09:10
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
0
fais :
<? mysql_query("SET NAMES UTF8"); ?>
0
Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
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 =)
0
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 ?...
0