2016-03-29 7 views
0

Ich habe Frühling erholsame Service implementiert. Es funktioniert gut wie erwartet, aber das Problem hier ist manchmal Anfrage Körper Json Daten haben mehrere Sprachen wie Chinesisch, Französisch, Japanisch.Frühling Restful Unterstützung json Daten multi Sprache

Anfrage Körper

{ 
    "firstName": "demo", 
    "lastName": "françois1", 
    "email": "你好" 
} 

in Verfahren Controller-i in

unten Format JSON-Daten sind immer
{ 
    "firstName": "demo", 
    "lastName": "ad�la�de", 
    "email": "??" 
} 

Es gibt eine Menge Unterschied ist, was Benutzer gab Service zur Ruhe und welche Feder Controller-Methode kehrt zu mir zurück. Kann mir jemand helfen, was schief gelaufen ist?

+0

Können Sie ein Stück Code des Controllers teilen? Ist es das, was Sie als Antwort im Browser bekommen? – Braj

+0

@Braj Antwort bin in Controller-Methode bekommen Ich muss Json Daten in der Datenbank persistent aber was Benutzer übergeben und was mein Controller bekommen ist völlig anders – venu

+0

Wie sendet Client JSON Daten an den Controller? Besteht das Problem beim Senden/Senden der Daten mit falscher Codierung vom Client anstelle der Controller-Codierung? Fügen Sie [consume] (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html#consumes--) Attribut von 'RequestMapping' hinzu, um es zu testen für korrekt akzeptierte Codierung. Folgen Sie diesem [post] (http://stackoverflow.com/questions/4962023/spring-mvc-requestmapping-headers-can-only-accept-one-value) – Braj

Antwort

0

vergewissern Sie sich, dass Ihre Zeichencodierung auf utf-8 eingestellt ist.

Wenn Kater so etwas wie unten in Ihrem server.xml richtig mit utf-8 Zeichen codiert wird dafür sorgen, tatsächlichen uri mit:

<Connector port="8080" maxHttpHeaderSize="8192" 
maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
enableLookups="false" redirectPort="8443" acceptCount="100" 
connectionTimeout="20000" disableUploadTimeout="true" 
compression="on" 
compressionMinSize="128" 
noCompressionUserAgents="gozilla, traviata" 
compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript" 
URIEncoding="UTF-8" 
/> 

und Web xml

<filter> 
    <filter-name>EncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <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> 
+0

bereits habe ich den Kodierungsfilter hinzugefügt. – venu

+0

@Venu stellen Sie sicher, dass Sie es richtig zugeordnet, und seine getroffen werden - setzen Sie einige Debug-Punkte? – NimChimpsky

+0

Du meinst sagen Set Debug-Punkt CharacterEncodingFilter? – venu

2

In web.xml, versuchen hinzufügen ein Filter

<filter> 
    <filter-name>encodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/springmvc_path/*</url-pattern> 
</filter-mapping> 

Ersetzen Sie den /springmvc_path/* Teil mit Ihr springMVC Servlet <url-pattern>

Dann starten Sie den Webserver neu.

+0

Codierungsfilter korrekt konfiguriert, Problem ist jedoch nicht mit Filter. etwas fehlt – venu

+1

@Venu Hast du den unordentlichen JSON-Wert in einer IDE (z. B. Eclipse) gesehen, wenn ja, wie lautet die Kodierung deines Arbeitsbereichs? Stellen Sie sicher, dass es auch utf-8 ist. –

Verwandte Themen