2010-10-27 7 views
3

Je remplis une zone de texte avec une entrée précédente d'un utilisateur. Ceci est extrait d'une base de données et défini comme le contenu du côté du serveur textarea.Remplir une zone de texte avec des caractères spéciaux

Il semble que nous ayons un problème avec une faute de frappe et une combinaison de caractères spéciaux. Si l'utilisateur entre &#6 à l'origine, lorsque j'essaie de remplir ma zone de texte avec cela, il rend juste un petit carré comme son interprétation de la valeur codée du caractère.

La création d'un fichier HTML avec les éléments suivants illustre mon problème.

<textarea name"mytextarea">some text &#5 some more text </textarea 

ceci est une faute de frappe, l'utilisateur destiné à entrer # 5 & # 6 donc une solution pour cela est simplement d'assurer lorsque l'utilisateur met une esperluette dans ce que j'ai un espace de chaque côté de celui-ci avant de l'afficher dans la zone de texte. C'est juste un problème de caractère spécial à l'envers de ce que j'ai l'habitude de voir.

Je suis curieux de savoir s'il existe un moyen d'obtenir la zone de texte pour afficher les caractères comme l'utilisateur l'a tapé et préserver cela par l'intermédiaire de la soumission de formulaire. Pour sauvegarder la tête d'avoir à analyser ou html encoder le texte avant de mettre dans la zone de texte.

Merci, muchly

Répondre

8

l'intérieur d'un textarea, vous devez convertir les caractères suivants dans leurs entités HTML:

& => &amp; 
> => &gt; 
< => &lt; 

De cette façon, &#5 deviendrait &amp;#5. Visuellement, pour l'utilisateur, il resterait &#5.

Vous ne spécifiez pas la langue côté serveur que vous utilisez. En PHP, la fonction correcte serait htmlspecialchars()

+0

Je vais essayer de mettre en place un test pour vérifier, mais si converti en html enttities puis copié vers une autre zone de texte via javascript puis soumis serait le la page traitant le formulaire reçoit & # 6 ou $ amp; # 6? C'est là que je risque de rencontrer un problème. – Nathan

+0

Si votre HTML contient '', alors l'utilisateur verrait une zone de texte qui contient le texte '& # 6', et si elles sont soumises, le serveur recevrait le texte' & # 6'. C'est exactement comme cela que vous devez spécifier un caractère d'esperluette dans votre page, par opposition à un caractère d'échappement qui commence une entité HTML. –

2

échapper à la & comme &amp;

Questions connexes