2013-02-19 18 views
7

Próbowałem wiele rzeczy i nie mogłem zrozumieć, dlaczego dostaję? zamiast akcentowanej postaci.Uzyskiwanie znaku zapytania zamiast litery akcentowanej przy użyciu sprężyny MVC 3

używam na moim html:

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

i mój kontroler ma następujący kod

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

jak mogę to naprawić?

Dzięki

+0

Czy możliwe jest uzyskanie właściwych znaków, z wyjątkiem tego, że podczas drukowania na konsoli konsola nie obsługuje utf-8? Spróbuj tego: http://stackoverflow.com/questions/2038733/how-do-i-change-a-hell-scripts-character-encoding – gerrytan

+0

To jest post lub prośba o pobranie? Czy możesz dodać rzeczywistą metodę z faktycznymi adnotacjami? –

+0

Jest to żądanie Post i jest to kod: RequestMapping (value = "/ userSignup", method = RequestMethod.POST) \t public String userSignup (\t RequestParam ("name") Nazwa ciągu, RequestParam ("email") String email, RequestParam ("birthdayDay") String birthdayDay, RequestParam ("urodzinyMonth") String urodzinyMont, RequestParam ("urodzinyRok") String birthdayYear, RequestParam ("sex") String sex, RequestParam ("hasło") Hasło łańcucha, RequestParam ("passwordConfirmation") Hasło łańcuchaConfirmation, odpowiedź HttpServletResponse, model ModelMap) { –

Odpowiedz

8

mogę rozwiązać ten problem, dodając następujący kod na mój szablon Master:

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

Akcentującego nas i innych języków takich jak arabski i mandaryński są trudne.
Chyba nie widziałem ostatniego z tego problemu.
Należy upewnić się, że tekst jest poprawnie zakodowany w dowolnym łączu w łańcuchu.

E.g.

  • bazy danych -> Java -> response-> Przeglądarka plików
  • Właściwości -> jav-> response-> przeglądarka
  • żądania (param/forma) -> response-> przeglądarka
  • java - > logger-> konsola

Proponuję po tej wielkiej odpowiedź How to get UTF-8 working in Java webapps?

aby dostosować go do SPRI ng używaj Springa CharacterEncodingFilter.

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

Jeśli używasz i18n upewnij się, aby zdefiniować domyślne kodowanie dla ResourceBundleMessageSource np

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

Upewnij się, że pliki właściwości są poprawnie zakodowane przy użyciu native2ascii języka Java.
Albo lepiej, jeśli używasz Eclipse Polecam Property Editor plugin.
kiedyś firm trzecich framework psuje i trzeba zrobić „magiczny”

new String(yourstring, "UTF8") 

Aby uzyskać więcej informacji, zobacz here

pamiętać, że niektóre z widokiem przeliczniki trzeba również zdefiniować kodowanie.

+0

Sprawdzę to. Dzięki, Haim! –

+0

Kolejnym potencjalnym problemem jest kodowanie appendera log4j. Dodaj do pliku log4j.properties następujący plik log4j.appender.emsSpringLogFile.encoding = UTF-8 –