2013-01-19 2 views
0

Flash Player HttpService (Spark Form의 데이터)에서 보낸 매개 변수를 디코딩하는 데 문제가 있으며 Java Servlet에서 수신했습니다. 나는 그것이 폴란드어 문자를해야하지만 내가 중국어 표지판을 얻을 콘솔에 사용자 이름을 표시 할 때Flash Player에서받은 매개 변수의 문자 인코딩

private void registerUser(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException { 
    //request.setCharacterEncoding("UTF-16LE"); 
    System.out.println(request.getCharacterEncoding()); 
    String login = request.getParameter("login"); 
    String password = request.getParameter("password"); 
    String email = request.getParameter("email"); 
    //String userName = DataUtils.getUTF8FromUTF16String(request.getParameter("userName")); 
    //String userName = request.getParameter("userName"); 
    byte[] bytes = request.getParameter("userName").getBytes(); 
    String userName = new String(bytes , "Unicode"); 
    System.out.println("UserName: " + userName); 
    String secondName = request.getParameter("secondName"); 
    String gender = request.getParameter("gender"); 
    boolean isMale = false; 
    if (gender != null) 
     isMale = !gender.equals("1"); 
    //String countryKey = request.getParameter("countryKey"); 
    String city = request.getParameter("city"); 
    String dateOfBirth = request.getParameter("dateOfBirth"); 
    Date dateDateOfBirth = null; 

:

<mx:HTTPService id="submitForm" result="onResultSend(event)" method="POST" url="{EVMServerConnection.SERVER_ADDRESS}/UserSubmitionServlet" useProxy="false" resultFormat="text"> 
     <mx:request xmlns=""> 
      <login>{login.text}</login> 
      <password>{password.text}</password> 
      <email>{email.text}</email> 
      <userName>{userName.text}</userName> 
      <secondName>{secondName.text}</secondName> 
      <gender>{String(gender.selectedItem)}</gender> 
      <countryKey>{String(country.selectedItem)}</countryKey> 
      <city>{city.text}</city> 
      <dateOfBirth>{String(dayOfBirth.selectedItem) + String(monthOfBirth.selectedItem) + String(yearOfBirth.selectedItem)}</dateOfBirth> 
     </mx:request> 
    </mx:HTTPService> 

서블릿 방법이 HttpService를 및 양식의 클라이언트 코드입니다. 새로운 String()에서 유니 코드 매개 변수 대신 UTF-16, UTF-16LE, UTF-16BE를 사용하려고했지만 결과는 비슷했습니다.

답변

0

유용한 Apache Tomcat 7 클래스가 제공됩니다. 내 web.xml에 SetCharacterEncodingFilter를 추가했는데 이제는 정상적으로 작동하고 일반적인 방법으로 매개 변수를 읽을 수 있습니다 (String name = request.getParameter ("name")에 의해)

... 
<filter> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
...