J'ai fait un CMS en PHP qui manipule avec des données de MySQL.
Dans mon CMS, j'ai des champs de saisie dans lesquels j'aimerais que la saisie semi-automatique de jQuery soit implémentée. Fondamentalement, l'idée est de créer des tableaux de jQuery à partir de tables MySQL ...Problème d'encodage de caractères dans PHP/MySQL/jQuery
Je travaille avec PHP 5.3.0, MySQL 5.0.82 et Eclipse 3.4.2. Mon projet PHP dans Eclipse est codé en UTF-8. Mes pages CMS sont en codage de caractères UTF-8 (<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
). Le site Web lui-même est également encodé en UTF-8. Base de données MySQL, et toutes les tables sont en UTF-8 (utf8_general_ci).
A ce moment tout fonctionne bien si je suis entrée que des lettres (même internationales et des symboles étranges), mais si j'entre certains de ces personnages "
, &
, <
ou >
, je rencontre quelques problèmes graves ... Quand j'entre un tel texte, tout semble bien dans ma base de données, mais quand j'essaye de créer un tableau pour jQuery, il crée une erreur à cause des guillemets (je suppose que même les guillemets simples posent problème ici ... Donc Je suppose que je devrais leur échapper d'une façon ou d'une autre, n'est-ce pas? Ensuite, j'utilise le htmlspecialchars
de PHP et le tableau de jQuery est créé correctement. Même lorsque je clique dans le champ de saisie et commence à taper du texte, la saisie semi-automatique affiche tous ces caractères correctement. Mais si je sélectionne réellement l'un des enregistrements avec ces caractères, ils apparaissent soudainement comme des caractères échappés de html ("
, &
, <
, >
). J'ai donc essayé d'appliquer htmlspecialchars_decode
à ce même champ de saisie mais cela n'a pas aidé ... Y a-t-il un moyen d'afficher correctement ces caractères dans mon champ de saisie lorsque je sélectionne un enregistrement de la saisie semi-automatique de jQuery?
J'ai essayé de google le problème, mais je n'ai rien trouvé pour résoudre mon problème ... S'il vous plaît aider!
Merci d'avance!
EDIT: Ceci est la façon dont je suis en train de créer un tableau pour jQuery ($tags
est juste un simple tableau):
<?php
$t = implode(", ", $tags);
?>
<script>
$(document).ready(function(){
var data_tags = "<?php echo htmlspecialchars($t); ?>".split(" | ");
$("#input_tags").autocomplete(data_tags, { multiple: true, multipleSeparator: ", " });
});
</script>
Je sais qu'il est peut-être pas la meilleure façon, mais en général il fonctionne :)
Je suis la génération d'un champ de saisie de cette façon:
<?php
function inputField($label, $name, $type, $size, $default=NULL, $misc=NULL){
$printInput = "<tr><td align=\"right\" valign=\"top\">\n";
$printInput .= $label;
$printInput .= "</td><td>\n";
$printInput .= "<input type=\"".$type."\" size=\"".$size."\" name=\"".$name."\" id=\"".$name."\" value=\"".$default."\"> ".$misc."\n";
$printInput .= "</td></tr>\n";
return $printInput;
}
echo inputField("TAGS", "input_tags", "text", 70, $db_tags);
?>
Sont-ils en cours de codage double? – alex
Non .. J'insère des chaînes dans et sortir de DB sans fonctions spéciales ... Juste 'comme c'est' ... :) – errata