Codage des caractères problème de printemps
Je suis coincé dans un gros problème avec l'encodage dans mon site web!
J'utilise spring 3, tomcat 6, et de bases de données mysql. Je veux les aider, l'allemand et le tchèque et l'anglais dans mon site web, j'ai créé tous les Jsp comme les fichiers UTF-8, et dans chaque jsp j'ai sont les suivants:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
J'ai créé des messages.les propriétés (la valeur par défaut qui est tchèque), messages_de.propriétés et messages_en.les propriétés. Et tous d'entre eux sont enregistrés en tant que fichiers UTF-8.
J'ai ajouté ce qui suit à web.xml:
<filter>
<filter-name>encodingFilter</filter-name>
<filterclass>
org.springframework.web.filter.CharacterEncodingFilter</filterclass>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<locale-encoding-mapping-list>
<locale-encoding-mapping>
<locale>en</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
<locale-encoding-mapping>
<locale>cz</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
<locale-encoding-mapping>
<locale>de</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
</locale-encoding-mapping-list>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Et ajouter ce qui suit à mon applicationContext.xml:
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basenames="messages"/>
<!-- Declare the Interceptor -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
p:paramName="locale" />
</mvc:interceptors>
<!-- Declare the Resolver -->
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
J'ai mis le useBodyEncodingForURI attribut à vrai dans l'élément de la server.xml en vertu de l': %CATALINA_HOME%/conf, également une autre fois essayé d'ajouter URIEncoding="UTF-8" à la place.
J'ai créé toutes les tables et les champs avec charset [utf8] et de collection [utf8_general_ci]
L'encodage dans mon navigateur est en UTF-8 (BTW, j'ai IE8 et Firefox 3.6.3)
Quand j'ai ouvert la Requête MYSQL navigateur et de les insérer manuellement tchèque ou allemande de données, il est inséré correctement, et affiche correctement dans mon app.
Alors, voici la liste des problèmes que j'ai:
- Par défaut les messages.propriétés (tchèque) doit se charger, au lieu de la messages_en.propriétés de charge par défaut.
- Dans le formulaire web, quand je rentre tchèque de données, puis cliquez sur soumettre, dans le Contrôleur, j'ai imprimer les données dans la console avant de l'enregistrer dans la base de données, ce qui est imprimé n'est pas correct d'avoir d'étranges caractères, et c'est exactement de données qui enregistre dans la base de données.
Je ne sais pas où est l'erreur! Pourquoi ne puis-je pas obtenir de travail bien que j'ai fait ce que les gens ne et a travaillé pour eux!!! ne sais pas..
S'il vous plaît aidez-moi, je suis coincé dans cette merde problème depuis des jours, et ça me rend fou!
Vous en remercie d'avance.
OriginalL'auteur user256872 | 2010-06-17
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, si votre projet est à l'aide de Maven, assurez-vous que le Maven Ressources Plugin a l'UTF-8 en tant que son personnage schéma de codage, sinon le message des fichiers de propriétés peut être écrite à votre cible avec un codage incorrect.
Deuxièmement, vous êtes à l'aide de ResourceBundleMessageSource, qui utilise le standard java.util.ResourceBundle et java.util.Propriétés, qui ne soutien de l'ISO-8859-1 codage. Vous pouvez à la place utiliser ReloadableResourceBundleMessageSource comme:
que j'ai découvert à partir de cette Gâteau Solutions de blog.
J'ai essayer ce Printemps application, mais pas de succès.
OriginalL'auteur Robert Campbell
Si cela ne fonctionne toujours pas et que vous utilisez Tomcat comme serveur d'applications essayer de régler les options suivantes sur chaque
<Connector>
élément dans leserver.xml
:Cela a fait l'affaire pour moi. Il y a peut être des options similaires pour d'autres serveurs d'application, de sorte que vous voudrez peut-être consulter la documentation du serveur.
OriginalL'auteur Koraktor
Je ne fais pas le Printemps, voici donc un shoot dans le noir: peut-être parce que l'anglais est ordonnée à la première et/ou de votre plate-forme/navigateur utilise l'anglais comme langue par défaut? Réorganiser la configuration et vérifiez
accept-language
en-tête de requête HTTP pour exclure des uns et des autres.Est la console configuré pour utiliser UTF-8 pour afficher des données? Elle serait d'utiliser la plate-forme de codage par défaut contraire. Par exemple, dans Eclipse, vous pouvez le configurer en Fenêtre > Préférences > Général > espace de travail > Texte de Codage de Fichiers.
Est la couche d'accès aux données configuré correctement pour gérer les données en UTF-8? Pilote JDBC MySQL est connu pour être un peu non intelligentes dans ce. Ne pas utiliser la base de données-codage spécifié, mais la plate-forme client encodage par défaut. Pour le moment, vous souhaitez utiliser le
useUnicode=true
etcharacterEncoding=UTF-8
propriétés dans la chaîne de connexion JDBC. E. g.OriginalL'auteur BalusC