By: aglachant
Date: 2011-03-23
Time: 14:25
|
htmlspecialchars</a>]: Invalid multibyte sequence in argumentBonjour,
voilà après plusieurs heures de recherche je poste une demande d'aide car je n'arrive pas à résoudre ce problème... j'ai un script qui charge une liste de messages (d'un forum) et qui plante avec le message suivant : Erreur N° 2 du 2011-03-23 14:07:37 (CET) Script : /home/beststra/public_html/common/tbs.class.php Ligne : 2165 Type : Avertissement PHP Message : htmlspecialchars() [<a href='function.htmlspecialchars'>function.htmlspecialchars</a>]: Invalid multibyte sequence in argument Le resultat de ma requete qui est la suivante :
puis mergé : $tbs->MergeBlock('tpl_mes_queue',$mes_queue); la partie html :
...j'ai diminué la "LIMIT" au fure et à mesure pour voir si le probleme persistait et trouver l'enregistrement qui pouvait en etre la cause...à 22 pas de problème, à 25 patrack... j'ai donc regardé les 3 enregistrements "delta" potentiellement à l'origine du plantage mais rien d'anormal... avez-vous une idée d'où peut venir le problème ? merci de votre aide ! Cordialement, Alexanrdre |
||
By: Skrol29
Date: 2011-03-24
Time: 01:09
|
Re: htmlspecialchars</a>]: Invalid multibyte sequence in argumentSalut,
Ces le paramètre "ope=max:25" qui crée une mauvaise coupure dans la chaîne texte de ton champ [title] parce qu'elle est probablement en UTF-8. Essaye le paramètre "maxutf8" en complément pour éviter ce problème. Plus d'info : http://www.tinybutstrong.com/fr/manual.php#html_field_prm_ope |
||
By: aglachant
Date: 2011-03-24
Time: 15:36
|
Re: htmlspecialchars</a>]: Invalid multibyte sequence in argumentBonjour skrol,
et merci de ton aide, ...bon j'ai essayé de rajouter maxutf8 mais ça ne marche toujours pas...je suis effectivement en encodage UTF8...et le problème vient certainement de l'option ope car quand je retire l'option ope=max:25 le probleme disparait, ...j'ai d'ailleurs essayer de trouver le caractère qui me provoque ça mais je ne vois rien de rien...as-tu une autre idée ? |
||
By: aglachant
Date: 2011-08-01
Time: 10:16
|
Re: htmlspecialchars</a>]: Invalid multibyte sequence in argumentBonjour skrol,
bon là c'est pire que tout ...toutes mes pages web m'affichent cette erreur maintenant ! impossible de trouver d'où cela vient, ma base mysql est encodée en utf8_general_ci (InnoDB) et mon ouverture de connection sql spécifie systématiquement le charset utf8. y a t il un moyen de corriger ou contourner ce probleme à ta connaissance ? tu peux constater le probleme ici : http://www.bests-traders.com HELP please je suis déséspéré ! merci d'avance |
||
By: Skrol29
Date: 2011-08-01
Time: 21:48
|
Re: htmlspecialchars</a>]: Invalid multibyte sequence in argumentBonjour,
Ben je ne vois rien. |
||
By: aglachant
Date: 2011-08-02
Time: 08:46
|
Re: htmlspecialchars</a>]: Invalid multibyte sequence in argumentBonjour skrol,
oui j'ai dû 'fixer' le probleme car je ne pouvais pas laisser le site HS. voilà la modif que j'ai fais pour palier le probleme car je ne trouvais pas d'autre solution mais c'est vraiment pas propre du tout : 1) Ajout de cette fonction : function my_validate_utf8($text) { if (strlen($text) == 0) { return TRUE; } // With the PCRE_UTF8 modifier 'u', preg_match() fails silently on strings // containing invalid UTF-8 byte sequences. It does not reject character // codes above U+10FFFF (represented by 4 or more octets), though. return (preg_match('/^./us', $text) == 1); } 2) Modification de la ligne ($Txt = htmlspecialchars($Txt, ENT_QUOTES, $this->HtmlCharSet);) dans tbs.class.php par : if ($this->HtmlCharSet=="utf-8" && my_validate_utf8($Txt)) $Txt = htmlspecialchars($Txt, ENT_QUOTES, $this->HtmlCharSet); else $Txt = htmlspecialchars($Txt, ENT_QUOTES); Est-ce qu'il y a un moyen dans ton script de détecter quelle partie des données (ou du template) pose le probleme ? j'ai bien essayé d'afficher le contenu de $Txt avant le htmlspecialchars, mais je n'ai rien vu qui posait probleme...enfin si le message d'erreur lui meme mais ca ne m'aide pas... |
||
By: Skrol29
Date: 2011-08-03
Time: 20:27
|
Re: htmlspecialchars</a>]: Invalid multibyte sequence in argumentBonjour Aglachant,
Tu m'a dit que tu base MySQL est en UTF-8. Il faut vérifier toute la chaîne : - la table est-elle en UTF-8 ? - ta connexion de PHP à MySQL est-elle configurée pour retourner de l'UTF-8 ? (tu peux t'en assurer en exécutant l'instruction SQL "SET NAMES 'utf8';" juste après la connexion) - ton modèle HTML est-t-il un fichier UTF-8 et a-t-il l'entête HTML <meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> ? - ton code source PHP est-il un fichier UTF-8 ? (bug classique : si c'est de l'ANSI, des caractères zarbi apparaissent lors de l'affichage de texte) Après-ça, si ça ne résout rien, je dois pouvoir reproduire le résultat et l'examiner pour pouvoir t'aider. Est ce que tu pourrais commencer par m'envoyer par email un échantillon de données qui pose problème. J'aurais besoin d'une part de quelques lignes qui figurent dans la base de données. Un simple dump de la table réduit à quelques lignes, dont tu sais qu'au moins une pose problème, me suffirait. D'autre part il me faudrait aussi un échantillon de données vues par PHP. Ce n'est pas très dure, voici comment faire : Tu repères le MergeBlock qui produit l'erreur, ce doit être quelque chose comme ça :
|