2011-09-03 3 views
2

좋은 시간! Adroid 앱은 Google의 API 서비스 중 하나에 HTTP 요청을 실행합니다. 물론, 그것은 영어로 요청의 매개 변수가 작동하지만, 내가 키릴 문자로 내 기능을 테스트 할 때 - 나는 400 오류를 얻는다. 문제는 Win-1251 문자열을 UTF-8로 인코딩하는 것입니다. 어떻게 Java로 수행 할 수 있습니까?Java에서 HTTP 요청에 키릴 기호를 인코딩하는 방법은 무엇입니까?

답변

11

시도 : 자바에서

URLEncoder.encode(yourString, HTTP.UTF-8); 
+1

감사합니다. 죄가 많고 명확합니다. –

+0

필수 구성 요소 (UTF-8 – Artem

9

요청 매개 변수를 인코딩하려면 URLEncoder#encode()을 사용해야합니다.

String query = "name1=" + URLEncoder.encode(value1, "UTF-8") 
      + "&name2=" + URLEncoder.encode(value2, "UTF-8") 
      + "&name3=" + URLEncoder.encode(value3, "UTF-8"); 

String url = "http://example.com?" + query; 
// ... 

매개 변수 이름은 실제로 URL로 인코딩되어야하지만이 특정 예에서는 모두 이미 유효합니다. Android의 기본 제공 HttpClient API를 사용하는 경우에는이 작업을 수행 할 필요가 없습니다.

+0

예, 특히 Android의 HttpClient에 대한 세부 정보, 감사합니다. –

2

모든 String 객체는 유니 코드 (UTF-16) 로 인코딩 된 유니 코드는 Windows-1251 문자 세트의 문자가 포함되어 있습니다.

예를 들어, "Česká"는 "\ u010Cesk \ u00E1"입니다.

사용자가 설정 한 다른 문자를 사용하여 다른 소프트웨어에이 문자열을 보내려면

는 해당 문자 클래스 CharsetEncoder를 사용하거나 클래스 OutputStreamWriter을 사용하고 Charset을 통과 설정 바이트로 문자열을 변환해야합니다.

그리고 당신은 다른 문자 세트에 다른 소프트웨어에서 문자열을받을 유니 코드를 다시 변환하는 Charset와 클래스 CharsetDecoder 또는 InputStreamReader 를 사용하는 경우.

관련 문제