2012-06-15 2 views
1

제출 된 데이터를 처리하기 위해 사용자와 서블릿의 입력을받는 JSP가 있습니다. 서블릿을 호출하고 매개 변수를 전달하는 Ajax 요청을 사용하고 있습니다.Google App Engine은 영국 파운드와 같은 특수 문자를 지원하지 않습니다.

여기 내 JSP 코드입니다 :

<%@ page language="java" import="java.util.*,com.*,bo.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 

<script type="text/javascript"> 


function check(){ 
       var i = document.getElementById('input').value; 
       var escapedi = escape(i); 
       escapedi = escapedi.replace("%u2019","%27"); 
       var xhr = new XMLHttpRequest(); 
       xhr.open("GET","LinkHandler?text="+ escapedi,true); 
       xhr.send(); 
     } 


</script> 
</head> 
<body> 
<input type="text" id="input"/><input type="button" onclick="check()" value="Submit"/> 
</body> 
</html> 

그리고 여기 내 서블릿 코드이다 : 나는 Google 웹 응용 프로그램에서 실행할 때

protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     String text = URLDecoder.decode(req.getParameter("text"),"UTF-8"); 
     System.out.println(text); 
    } 

코드는 정상적인 웹 프로젝트에 잘 실행되지만 프로젝트에서 영국 파운드와 같은 일부 특수 문자는 "?"로 표시됩니다.

어떻게 해결할 수 있습니까? 제발 도와주세요!

답변

0

App Engine의 Locale이 로컬 시스템의 로케일과 다를 수 있습니다. 당신은

Locale.getDefault() 

또한 사용하여 환경의 현재 현지을 인쇄 할 수 있습니다, 당신을 setDefault을 사용하여 변경할 수 있습니다()

+0

위의 문은 en_IN가 두 환경, 그것은 코드에 어떻게 영향을 미치는지하지만 확실하지에 제공합니다. – shashank

+0

알았습니다! 위 코드에서와 같이 "i"를 이스케이프하지 마십시오. 대신 직접 변수를 전달하고 Servlet 측에서 UTF-8로 디코딩하십시오. – shashank

관련 문제