2010-06-23 1 views
0

처음 환경 : 클라이언트가 iPhone의 모바일 사파리이고 서버는 IIS가 설치된 Tomcat 5.5로 구성됩니다.iPhone 브라우저/IIS/Tomcat, 일본어 로켈, http 매개 변수가 엉망이 됨

내가 서버에 하나의 매개 변수를 전송하고 어떤 응답을 다시 얻을 자바 스크립트 코드의 조각을 가지고

var url = "/abc/ABCServlet"; 
var paramsString = "name=SomeName" 
xmlhttpobj = getXmlHttpObject(); //Browser specific object returned 
xmlhttpobj.onreadystatechange = callbackFunction; 
xmlhttpobj.open("GET", url + "?" + paramsString, true); 
xmlhttpobj.send(null); 

아이폰 언어/로케일은 EN/US 때이 잘 작동; 로케일/언어가 일본어로 변경되면 서버가 수신 한 쿼리 매개 변수는 따옴표없이 "SomeName #"이됩니다. 어떻게 든 #가 끝에 붙습니다.

단서가 필요한 이유는 무엇입니까?

답변

0

올바른 문자 세트 (예 : <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />)를 지정하고 HTML 파일의 예상 데이터 인코딩과 일치하는 HTML 태그 상단에 메타 태그를 추가하기 만하면됩니다.

그래도 작동하지 않는 경우 응용 프로그램 전체에서 동일한 문자 인코딩 (UTF-8 권장)을 사용하고 있는지 확인하십시오. 서버 측 스크립트와 응답 스트림에 직접 추가 할 텍스트 문자열이 포함 된 파일은 해당 단일 인코딩으로 저장해야합니다. 가능한 경우 서버에서 동일한 인코딩 (예 : "text/html; charset = utf-8")의 "Content-Type"HTTP 헤더를 보내도록하는 것이 좋습니다. 그리고 표시하는 모바일 사파리 페이지에 올바른 Content-Type 메타 태그가 있는지 확인해야합니다.

일본어 개발자는 파일을 EUC 또는 ISO-2022-JP에 저장하는 습관이 있습니다. 두 브라우저 모두 일부 브라우저에서 다른 글꼴을 사용하도록하고 브라우저가 로마를 기대하는 경우 심각하게 페이지를 손상시킬 수 있습니다. charset. 좋은 소식은 일본 인코딩 중 하나를 사용해야하는 경우 인코딩이 일반적으로 대부분의 영어 텍스트에 적합하게 표시된다는 것입니다. 당신이 조심해야 할 확장 문자입니다.

지금 내가 틀렸을 수도 있지만 AJAX를 통해 이러한 파일을로드하는 것이 문제가되지 않는다고 생각했습니다. (로드하는 모든 텍스트 파일의 문자 집합에 따라 브라우저가 문자 데이터를 다시 매핑한다고 생각합니다.)하지만 믹싱을 시작할 때 문서 인코딩을 단일 파일 (특히 문서 본문)에 넣으면 나쁜 일이 발생할 수 있습니다. 아마도 모바일 사파리는 HTML 파일과 AJAX 파일 모두에 대해 동일한 인코딩을 요구합니다. 내가하지 희망. 그것은 추한 것입니다.

+0

응답 해 주셔서 감사하지만 표시된 페이지에는 charset에 대한 메타 헤더가 있으며 서블릿은 http 헤더도 설정합니다. – saugata

+0

두 값이 같은가요? – Andrew

+0

죄송합니다. 더 나은 질문을 해봅시다 : 서버가보고하는 문자 세트와 동일한 파일 (또는 하나 이상의 파일로 구성된 파일)의 문자 세트입니까? 또한 브라우저 나 HTTP 헤더에 어떤 문자 집합이 설정되어 있습니까? 문자 집합이 ISO 8859-1과 같이 일본어를 지원하지 않으면 문제가 발생할 것입니다. – Andrew

관련 문제