Caractere chinois et UTF-8

Résolu
Artamos Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   -  
 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.
A voir également:

13 réponses

Artamos Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   16
 
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   Statut Membre Dernière intervention   16
 
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 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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   Statut Membre Dernière intervention   16
 
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   Statut Membre Dernière intervention   20
 
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   Statut Membre Dernière intervention   16
 
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   Statut Membre Dernière intervention   20
 
Alors là c'est bizar, tu aurait pas une url qu'on puisse voir?
0
Titial69 Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   20
 
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   Statut Membre Dernière intervention   16
 
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   Statut Membre Dernière intervention   16
 
non plus, je dois partir, je reessayerais demain d'autres options.
0
Titial69 Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   20
 
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   Statut Membre Dernière intervention   16
 
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
boodcode
 
fais :
<? mysql_query("SET NAMES UTF8"); ?>
0
Artamos Messages postés 165 Date d'inscription   Statut Membre Dernière intervention   16
 
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
Claude
 
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