2013-02-19 21 views
7

Tôi đã thử rất nhiều điều và không thể hiểu tại sao tôi đang nhận được? thay vào đó là ký tự có dấu.Lấy dấu chấm hỏi thay vì ký tự có dấu bằng cách sử dụng mùa xuân MVC 3

Tôi đang sử dụng trên html của tôi:

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

và bộ điều khiển của tôi có đoạn mã sau

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

làm thế nào để khắc phục điều đó?

Cảm ơn

+0

Bạn có thể nhận được các ký tự thích hợp không, ngoại trừ khi bạn in nó vào bảng điều khiển, bảng điều khiển của bạn không hỗ trợ utf-8? Hãy thử cách này: http://stackoverflow.com/questions/2038733/how-do-i-change-a-shell-scripts-character-encoding – gerrytan

+0

Đây là bài đăng hoặc yêu cầu nhận? Bạn có thể thêm phương pháp thực tế với chú thích thực tế không? –

+0

Đó là yêu cầu đăng và đó là mã số: RequestMapping (giá trị = "/ userSignup", phương pháp = RequestMethod.POST) \t public String userSignup (\t RequestParam ("name") Tên chuỗi, RequestParam ("email") Chuỗi email, RequestParam ("birthdayDay") String birthdayDay, RequestParam ("birthdayMonth") String birthdayMonth, RequestParam ("birthdayYear")) String birthdayYear, RequestParam ("sex") Chuỗi tình dục, RequestParam ("mật khẩu") Mật khẩu chuỗi, RequestParam ("passwordConfirmation") Mật khẩu chuỗiXác nhận, phản hồi HttpServletResponse, mô hình ModelMap) { –

Trả lời

8

tôi có thể khắc phục vấn đề này bằng cách thêm đoạn mã sau vào template chủ của tôi:

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

thư Accented và các ngôn ngữ khác như tiếng Quan Thoại và tiếng Ả Rập là khéo léo.
Tôi đoán bạn chưa thấy sự cố cuối cùng của vấn đề này.
Bạn nên đảm bảo rằng văn bản của bạn được mã hóa chính xác trong bất kỳ liên kết nào trong chuỗi.

Ví dụ:

  • cơ sở dữ liệu -> java -> response-> duyệt tập tin
  • bất động sản -> jav-> response-> Trình duyệt
  • yêu cầu (param/form) -> response-> Trình duyệt
  • java - > logger-> console

tôi đề nghị sau câu trả lời tuyệt vời này How to get UTF-8 working in Java webapps?

để điều chỉnh nó để spri ng sử dụng CharacterEncodingFilter của mùa xuân.

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

Nếu bạn đang sử dụng i18n, hãy đảm bảo xác định Mã hóa mặc định cho ResourceBundleMessageSource của bạn, ví dụ:

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

Đảm bảo tệp thuộc tính của bạn được mã hóa chính xác bằng native2ascii của Java.
Hoặc tốt hơn nếu bạn sử dụng eclipse Tôi khuyên bạn nên Property Editor plugin.
Đôi khi bên thứ ba phá vỡ khuôn khổ một cái gì đó và bạn cần phải làm “kỳ diệu”

new String(yourstring, "UTF8") 

Để biết thêm thông tin, xem here

Lưu ý rằng một số phân giải xem cũng cần phải xác định mã hóa.

+0

Tôi sẽ kiểm tra điều này. Cảm ơn Haim! –

+0

Một vấn đề khác nữa là mã hóa của trình cài đặt log4j. Thêm thông tin sau vào tệp log4j.properties của bạn log4j.appender.emsSpringLogFile.encoding = UTF-8 –