tinyMCE => PHP => MySQL : erreur UTF-8 (Incorrect string value)

tinyMCE => PHP => MySQL : erreur UTF-8 (Incorrect string value) - HTML/CSS - Programmation

Marsh Posté le 24-04-2012 à 12:30:16    

Bonjour,
J'ai un module de contenu dont la sauvegarde génère parfois des erreurs du type

Code :
  1. INSERT INTO jc_module_version (id_module,id_user,accroche,contenu,date_crea) VALUES (599,433,'', 'Du blah blah avec des caractères accentué','2012-04-24 12-17-03') => Incorrect string value: '\xE2\x80\x8B\xE2\x80\x8B...' for column 'contenu' at row 1


 
Je pense que c'est un problème de copier coller depuis certains logiciels ou avec certains navigateurs mais j'aimerais bien un peu d'aide pour debuger / résoudre le problème en traitant mon input ou dans le pire des cas expliquer à mes utilisateurs une manipulation "safe".
L'utilisateur à qui ça arrive, (qui n'est pas très computer friendly utilise surement notepad et IE) je vais checker ça plus en détail...
 
Si certaines personne ont déjà rencontré le problème ou ont des pistes à exploré...

Reply

Marsh Posté le 24-04-2012 à 12:30:16   

Reply

Marsh Posté le 24-04-2012 à 16:03:56    

Voila sa réponse à ma question sur sa façon de copier/coller:

Citation :

je travaille avec wordpad
je suis sous Modzilla (version 11.0 je crois)
le curieux c'est que cela marche à + 90% de mes interventions
j'en suis pas au premier transfert


 
Personne n'a d'idée ?

Reply

Marsh Posté le 26-04-2012 à 10:23:49    

Tu insères comment tes données en bases ? A la bite et au couteau ou tu passes par de vrais outils ? PDO, doctrine ou autre


---------------
Blablaté par Harko
Reply

Marsh Posté le 26-04-2012 à 11:49:13    

Bite + couteau :
 
J'ai un traitement de mes $_get et $_post que je met dans un array() $form en nettoyant un peu (genre stripslashe si nécessaire).
 
Et après j'ai un singleton DB pour mes requetes SQL.
 
Rien de bien méchant en somme, ce qui est bizarre c'est que le bug semble aléatoire...

Reply

Marsh Posté le 26-04-2012 à 18:08:53    

En l’occurrence mon singleton fait :

Code :
  1. mysql_query($sql, self::$link) or mail('monadresse',$sql. => myqsl_error());


Et je reçoit par mail ce que j'ai mit en code dans mon premier mail...
 
Mais évidement dans le mail j'ai pas les \xE2, le texte à l'intérieur de la colonne contenu à l'air correct...
 
Pourquoi et dans quel condition l'UTF-8 pourrait se corrompre, c'est ca que je ne comprend pas, et que je n'arrive pas à débugguer :(


Message édité par mechkurt le 26-04-2012 à 18:10:08
Reply

Marsh Posté le 28-04-2012 à 13:20:06    

Le dernier plantage était due au terme "pachalık" si on remplace le par "pachalik", ça fonctionne (notez le i "à la con" ).
 
Mais en UTF-8 est que ça ne devrait pas passer ?
Je pensais naivement qu'on pouvait coder n'importe quel caractère en UTF-8, me serait-je fourvoyé ? ^^
 
Sinon qu'elle vérification puis je faire en php dans mon singleton, je fais un DB::protect dans toutes mes requêtes quand je n'ai pas affaire à une valeur numérique.
Pour le moment je me contente d'un mysql_real_escape_string(), mais je pourrais par exemple ajouter un iconv() ou un preg_replace() pour traiter ces caractères avant l'insertion SQL.

Reply

Marsh Posté le 02-05-2012 à 10:02:04    

:bounce:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed