L'encodage UTF-8 avec Spring Boot 1.1.1
Comment puis-je "dis" Printemps de Démarrage pour utiliser le codage UTF-8, pour afficher et enregistrer les accents correctement?
Nous sommes de programmation Java-Webapplication à l'aide de Sping-Boot 1.1.1 (Libération) et en tant que serveur un TomCat7 ou Jetty. La base de données postgresql ou h2 pour les tests.
Edit:
Je l'ai essayé avec le fichier de propriétés (merci pour la réponse), mais pas de changements sont visibles.
La base de données est également UTF-8...
En particulier, le problème vient, quand nous envoyer un POST-Requête au Serveur web.
Le Printemps-Demande de Gestionnaire obtient déjà brisé codé valeurs.
En la suivant, vous pouvez voir une partie du code:
(Il montre un extrait de la Thymeleaf-Modèle)
<form accept-charset="utf-8" method="post">
<div class="row">
<fieldset th:object="${model}">
<!-- CSRF token -->
<th:block th:replace="makros :: csrf" />
<div class="col-sm-4 form-group" >
<label for="firstname" th:text="#{edit_user.first_name}">Given Name</label>
<input class="form-control required" type="text" required="required" id="firstname" name="firstname" th:field="*{firstName}" />
</div>
<div class="col-sm-4 form-group">
<label for="firstname" th:text="#{edit_user.last_name}">Family Name</label>
<input class="form-control required" type="text" required="required" id="lastname" name="lastname" th:field="*{lastName}" />
</div>
</fieldset>
</div>
</form>
Et c'est le gestionnaire de requêtes pour que:
@RequestMapping(method = RequestMethod.POST)
public String handleUserUpdate(@ModelAttribute(MODEL) UpdateUserCommand command) {
//here we cut the broken encoded values
}
Salutations
Stef
OriginalL'auteur Dubstef | 2014-07-10
Vous devez vous connecter pour publier un commentaire.
Ce qui est mal encodé? La demande ou de la réponse?
server.tomcat.uri-encoding
est la commutation de la URI décodage deUTF-8
(c'est déjà le cas pour les Jetty).Mais qui ne fait rien pour le corps de la requête. Par défaut, Spring MVC, décode avec
ISO-8859-1
(qui est la valeur par défaut par la servlet spec). Vous devez spécifier un corps de codage dans votre demande si vous voulez qu'il soit décodé à l'aide deUTF-8
. La plupart des utilisateurs sont en fait à l'aide de laCharacterEncodingFilter
pour obtenir la même chose (et d'en assurer la cohérence).Si cela résout votre problème, watch out pour les #1182 qui est destiné à fournir une auto-configuration pour que.
OriginalL'auteur Stephane Nicoll
Cela m'a aidé:
Les deux ce et
server.tomcat.uri-encoding=UTF-8
travaillé. À prévenir la corruption dans la DB et une pour prévenir la corruption lors de la soumission de l'UTF.OriginalL'auteur ACV
La dernière doit être en UTF-8 par défaut, je pense? Voir les docs sur
server.tomcat.uri-encoding
: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties. Otoh, que cela pourrait dépendre de l'endroit où vous avez besoin de l'encodage à arriver (Printemps de Démarrage ne sait rien au sujet de votre serveur de base de données de codage par exemple).OriginalL'auteur Dave Syer
Vous pouvez définir l'encodage UTF-8 comme encodage par défaut pour le printemps-boot-maven-plugin.
J'ai créer 2 maven profil pour exécuter le printemps de démarrage en UTF-8 et set active printemps profil via maven profil:
Et exécuter
mvn spring-boot:run
pour dev profil (application-dev.les propriétés) etmvn -P prod spring-boot:run
pour l'application.propriétésOriginalL'auteur GKislin