2013-02-19 12 views
7

Ich versuchte viel und konnte nicht verstehen, warum ich bekomme? stattdessen Akzentbuchstaben.Fragezeichen statt Akzent Brief mit Feder MVC 3

Ich verwende auf meinem html:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

und mein Controller hat den folgenden Code

@RequestParam ("name") String name 
name = name.trim(); 
system.out.println(name); 
//response t?ata 
//expected tábata 

wie mache ich das Problem lösen?

Dank

+0

Können Sie möglicherweise die richtigen Zeichen erhalten, außer es ist nur, dass wenn Sie es auf der Konsole drucken, Ihre Konsole UTF-8 nicht unterstützt? Versuchen Sie Folgendes: http://stackoverflow.com/questions/2038733/how-do-i-change-a-shell-scripts-character-encoding – gerrytan

+0

Ist dies ein Post oder eine Anfrage? Können Sie die tatsächliche Methode mit den tatsächlichen Anmerkungen hinzufügen? –

+0

Es ist Post-Anfrage und das ist der Code: RequestMapping (Wert = "/ userSignup", Methode = RequestMethod.POST) \t öffentliche Zeichenkette userSignup (\t RequestParam ("Name") String-Name, RequestParam ("Email") String-Email, RequestParam ("birthdayDay") String birthdayDay, RequestParam ("birthdayMonth") String birthdayMonth, RequestParam ("birthdayYear") String birthdayYear, RequestParam ("sex") String sex, RequestParam ("password") String password, RequestParam ("passwordConfirmation") String passwordConfirmation, Antwort von HttpServletResponse, Modell ModelMap) { –

Antwort

8

ich dieses Problem, indem Sie den folgenden Code auf meinem Master-Template beheben könnte:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 
0

Accented Brief und andere Sprachen wie Mandarin und Arabisch sind heikel.
Ich denke, Sie haben das letzte dieser Ausgabe nicht gesehen.
Sie sollten sicherstellen, dass Sie Ihren Text in jedem Link in der Kette korrekt codiert halten.

z.

  • Datenbank -> Java -> response-> Browser
  • Properties-Datei -> jav-> response-> Browser
  • Anfrage (param/form) -> response-> Browser
  • java - > logger-> console

ich schlage vor, folgend dieser große Antwort How to get UTF-8 working in Java webapps?

es zur Anpassung an SPRI ng verwenden den CharacterEncodingFilter von spring.

<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> 

Wenn Sie i18n verwenden, stellen Sie sicher, dass die Standard-Kodierung für Ihre ResourceBundleMessageSource definieren z.B.

<bean id="messageSource" 
class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
    > 
     <property name="basename" value="classpath:messages"/> 
     <property name="defaultEncoding" value="UTF-8"/> 
     <property name="useCodeAsDefaultMessage" value="false"/> 
</bean> 

Stellen Sie sicher, dass Ihre Eigenschaftendateien korrekt mit Javas native2ascii codiert sind. here

Hinweis
Oder besser, wenn Sie Eclipse Property Editor plugin.
verwende ich empfehlen Irgendwann Rahmen Pause etwas von Drittanbietern und Sie müssen die „magische“ sehen

new String(yourstring, "UTF8") 

Weitere Informationen zu tun, dass einige Ansicht Resolvern müssen auch die Codierung definieren.

+0

Ich werde das überprüfen. Danke Haim! –

+0

Ein weiteres potentielles Problem ist die Kodierung des log4j-Appenders. Fügen Sie der Datei log4j.properties log4j.appender.emsSpringLogFile.encoding = UTF-8 Folgendes hinzu –