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.

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();
Si je tape dans le formulaire dans le champ nom :
Paris é 巴黎
La base2 stocke Paris é ??
Le résultat devrait être :
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