Bonjour,
Après des heures et des heures de recherches, je capitule et décide d’appeler à l’aide.
Voilà :
J’ai un module php/mysql full UTF8 : j’entends par là :
fichier encodé en utf-8,
un header('Content-Type: text/html; charset=utf-8'); au début de chaque page,
etc, etc.
Bref, tout se passe bien. Je stocke dans la base ce que j’ai à l’écran. Les caractères chinois sont stockés en chinois, le russe en russe, etc.
Maintenant, j’ai un formulaire que je dois non seulement enregistrer dans ma base mais aussi dans une base mysql tiers. Et là, je sèche. Je rencontre un problème de conversion. Je n’arrive pas à enregistrer dans une base non utf8 des datas qui le sont.
Si je tape dans le formulaire dans le champ nom :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 // Code de mise à jour mysql_query("SET NAMES 'utf8'",$connexion); if (isset($_POST['nom'])) {$nom = trim(ucwords(strtolower(mysql_real_escape_string($_POST['ag_nom'])))); $nom_base2= utf8_decode(trim(ucwords(strtolower(mysql_real_escape_string($_POST['ag_nom'])))));} Code de mise à jour de la base 1 (rien à signaler tout fonctionne parfaitement) // mise à jour de la base 2 : base tiers $host2="X.Y.T.U; //nom du serveur $user2="XXX"; //nom utilisateur $pass2="ZZZ"; //mot de passe $base2="QQQ"; //nom de la base de données // connexion à MySQL mysql_connect ($host2,$user2,$pass2) or die ('ERREUR '.mysql_error()); // sélection de la base de données mysql_select_db ($base2) or die ('ERREUR '.mysql_error()); //mysql_query("SET NAMES 'iso-8859-1"); $req2 = "UPDATE tabe_a_modifier SET nom='".$nom_base2."' WHERE ID='".$_POST['id']."'"; mysql_query($req2); mysql_close();
Paris é 巴黎
La base2 stocke Paris é ??
Le résultat devrait être :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Paris é 巴黎
J'ai testé plusieurs traitements avec sans utf8_decode(), etc. rien n'y fait.
Si on regarde le code du formulaire initial rattachée à la base 2, on constate les points suivants :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Et pour le reste, rien de spécial :
<input type="text" name="name" value="<? print($nom); ?>" size="50" maxlength="100">
Le code de mise à jour dans la base2 est classique, pas de traitement particulier des $_POST.
La table qui reçoit les data utilise un Interclassement latin1_swedish_ci
En vous remerciant par avance,
Tavar
Partager