L'encodage UTF-8 dans la page JSP
J'ai un JSP
page dont le codage de la page est ISO-8859-1
. Cette page JSP il y a à répondre à la question d'un blog. Je veux inclure des caractères spéciaux lors de Q/détachement.
Le problème est JSP n'est pas en faveur UTF-8
codage de même que j'ai changé de ISO-8859-1
à UTF-8
. Ces caractères (~
,%
,&
,+
) font problème. Quand je suis à l'affichage de ces caractères, soit individuellement, soit avec la combinaison de n'importe quel caractère il est storinh null
dans la base de données et quand je supprimer ces caractères, tandis que l'affichage de l'application, il fonctionne bien.
Quelqu'un peut-il suggérer une solution?
- montrer le code que vous recevez les données, comment les stocker dans la base de données, la façon de vous afficher qu'il pd à jsp
- C'est un code très long, je ne peux pas coller ici, mais je peux dire u le flux. L'utilisateur affiche la réponse à une question à partir d'une page jsp(un.jsp). Je suis prise toute la valeur d'un tester.js fichier (sur submit (soumettre), alors ces valeurs vont caché page jsp puis je suis l'appel de la méthode java pour afficher les données. Si un utilisateur affiche (&&&&&&&), la valeur est à venir jusqu'à tester.js fichier mais après l'envoi de la valeur de caché page jsp toutes les valeurs null.(seulement dans le cas ci-dessus décrivent caractère spécial reste fonctionne bien).
- merci de poster le tester.js s'méthode qui gère la présentation
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le même encodage sur toutes les couches de votre application afin d'éviter ce problème. Il est utile d'ajouter un filtre pour définir l'encodage:
De définir l'encodage des pages JSP, ajoutez cette ligne à eux:
Configurer votre base de données à utiliser le même encodage que bien.
Si vous avez besoin de convertir l'encodage d'une chaîne de caractères, voir:
Je recommande de ne pas stocker le HTML du texte encodé dans votre base de données. Par exemple, si vous avez besoin de générer un fichier PDF (ou autre chose que de l'HTML) vous avez besoin de convertir l'encodage HTML en premier.
Le plein de balises JSP doit être quelque chose comme cela, l'esprit de la pageEncoding trop:
Certains vieux navigateurs gâcher avec de l'encodage trop. vous pouvez utiliser la balise HTML
Également le fichier doit être enregistré au format UTF-8, si vous utilisez Eclipse gauche-cliquez sur le fichier->Propriétés->découvrez ->Texte d'encodage de fichier.
pageEncoding
est présent, le conteneur JSP utilisera aucune valeur présente danscontentType
. Je interpréter cela signifie quecontentType="text/html; charset-UTF-8
est suffisante etpageEncoding="UTF-8"
isallowed (mais pas nécessaire. Et notez que de toute façon ce définit simplement le retour des en-têtes HTTP; la<meta>
balise est pour les anciens navigateurs qui ne respectent pas les en-têtes HTTP. (La distinction n'était pas clair dans la réponse originale à cette question.)J'ai également eu un problème d'affichage des charectors comme "Ṁ Ö".J'ai ajouté ce qui suit à mon web.xml.
Cela a résolu le problème dans les pages à l'exception de l'en-tête. Essayé de nombreuses méthodes pour résoudre ce problème et rien n'a fonctionné dans mon cas. Le problème avec la tête en-tête de page jsp est inclus à partir d'un autre jsp. Donc a donné l'encodage à l'importation et qui a résolu mon problème.
Grâce
Vous devez vous assurer que le fichier est enregistré avec l'encodage UTF-8.
Vous pouvez le faire avec plusieurs éditeurs de texte ordinaires. Avec Notepad++, c'est à dire, vous pouvez choisir dans le menu
Encoding
-->Encode in UTF-8
. Vous pouvez également faire de même avec Windows bloc-notes (Save As
--> Encodage UTF-8).Si vous utilisez Eclipse, vous pouvez le configurer dans les Propriétés du fichier.
Aussi, vérifiez si le problème est que vous avez à échapper ces personnages. Il ne serait pas étrange qu'était votre problème, comme l'un des personnages est
&
.Ce fil peut vous aider à:
En passant les paramètres de la demande comme de l'UTF-8 chaînes codées
En gros:
Ou l'utilisation de javascript sur le fichier jsp:
et après le rétablissement de la classe:
J'ai utilisé le filtre de codage qui a résolu mon problème d'encodage...
dans web.xml
C'est une problématique commune.
l'un de la meilleure façon de le résoudre est de vérifier si le caractère spécial est d'atteindre l'intérieur de l'action de la couche, puis en modifiant le caractère spécial dans le code java.
Si vous êtes en mesure de voir ce personnage dans l'Action ou de toute autre java couche de votre choix (couche métier), il suffit de remplacer le caractère correspondant au code HTML des caractères à l'aide de la StringEscapeUtils.html#escapeHtml
Après l'évasion. l'utilisation de la nouvelle chaîne à enregistrer dans la bd.
Ce sont des caractères spéciaux en html. Pourquoi ne pas vous l'encoder?
Check it out: http://www.degraeve.com/reference/specialcharacters.php
Cela va vous aider.
J'ai eu le même problème en utilisant des caractères spéciaux comme des séparateurs sur JSP. Lorsque les caractères spéciaux ai posté à la servlet, ils se sont foiré. J'ai résolu le problème en utilisant la conversion suivante:
je ajouter ce script shell pour convertir des fichiers jsp EST
Merci pour tous les Conseils. À l'aide de Tomcat8 j'ai aussi ajouté un filtre comme @Jasper de Vries a écrit. Mais dans la nouvelle Matous aujourd'hui, il existe un filtre déjà mis en œuvre qui peut être utilisé resp juste décommenté dans le Tomcat web.xml:
Et comme tous les autres publiés; j'ai ajouté le
URIEncoding="UTF-8"
pour le Connecteur Tomcat Apache. Qui a également contribué à.D'Important à dire, qu'Eclipse (si vous utilisez cette) a une copie de son web.xml et remplace le Tomcat-Paramètres comme il a été expliqué ici: Cassé UTF-8 URI de l'Encodage en Jsp
Le codage de la Page ou quoi que ce soit d'autre, n'importe pas beaucoup. ISO-8859-1 est un sous-ensemble de l'UTF-8, donc vous n'aurez jamais à convertir ISO-8859-1 à UTF-8, ISO-8859-1 est déjà en UTF-8,un sous-ensemble de l'UTF-8, mais toujours en UTF-8.
De Plus, tout ce qui ne veux pas dire une chose si Vous avez un double codage quelque part.
C'est ma "guérison à tous" recette pour toutes les choses de l'encodage et le jeu de caractères liés:
//La chaîne est double codé, fixer que le premier.