2010-05-02 9 views
1

Google AppEngine에서 작은 프로젝트를 만들고 있지만 국제 문자에 문제가 있습니다. 내 프로그램은 사용자가 "page.html? data1 & data2 ..."URL을 통해 데이터를 가져 와서 나중에 표시하기 위해 저장합니다.AppEngine의 국제 문자 디코딩

그러나 사용자가 åäö와 같은 일부 국제 문자를 사용하는 경우 % F4, % F5 및 % F6으로 코드화됩니다. ASCII 테이블의 처음 128 개 (?) 문자 만 http-request에 허용되기 때문이라고 가정합니다.

누구에게 좋은 해결책이 있습니까? 텍스트를 디코딩하는 간단한 방법은 무엇입니까? 데이터를 저장하기 전에 데이터를 디코딩하는 것이 더 낫습니다. 또는 데이터를 사용자에게 표시 할 때 데이터를 디코딩해야합니다.

답변

1

URL에는 아무 것도 포함 할 수 있지만 encoded이어야합니다. 자바에서는 URLEncoderURLDecoder을 사용하여 url을 원하는 문자 인코딩으로 인코딩하고 디코딩 할 수 있습니다.

이러한 클래스는 실제로 HTML 형식 인코딩 용이지만 URL의 쿼리 문자열 (매개 변수)에 적용될 수 있으므로 매개 변수에서만 전체 URL에 사용하지 마십시오.

+0

% - 코드 대신 몇 가지 물음표가 나타납니다. 하지만 어떻게 든 해결할 수 있어야합니다. 도와 주셔서 감사합니다! – Irro

+0

내 문제가있는 다른 사람들을 위해 : 나는 ISO-8859-1 디코딩을 사용하여 작동시키고있다. 어떤 이유로 UTF-8이 작동하지 않았습니다. – Irro

+1

URL의 콘텐츠 인코딩은 브라우저 및 URL 또는 양식이 포함 된 페이지의 인코딩에 따라 다릅니다. UTF-8 형식을 포함하는 페이지를 명시 적으로 제공하십시오. ISO-8859-1은 즉각적인 문제를 해결할 수 있지만 사용자가 대다수의 유니 코드 문자를 사용할 수 없게 만듭니다. –

0

URI 사양 (RFC 3986)은 URI (ABNF 참조)에서 사용할 수있는 문자를 제한하고 "안전하지 않은"문자를 전송하기위한 퍼센트 인코딩 체계를 정의합니다. Bozho says으로 URL의 쿼리 부분은 일반적으로 HTML 사양 (application/x-www-form-urlencoded)에 따라 인코딩됩니다.

doc for App Engine

는 말한다 :

앱 엔진은 웹 애플리케이션을위한 자바 서블릿 표준을 사용합니다.

그래서 Servlet API가 매개 변수를 디코딩하도록해야합니다. HttpServletRequest에있는 매개 변수 방법을 참조하십시오. 이러한 종류의 인코딩은 일반적으로 뷰 레이어에 보관되어야하므로 데이터는 인코딩되지 않은 상태로 저장됩니다.

수동으로 수행하는 경우 this blog post on character handling in URIs을 확인하십시오.

+0

대신 다른 문제가 있었지만 이것이 정말로 도움이되었습니다. 감사! – Irro