2013-02-25 4 views
1
 URL url = new URL("http://google.com"); 
     URLConnection connection = url.openConnection(); 

     connection.connect(); 

     System.out.println("conncetion successful."); 

     String contentType = connection.getContentType(); 
     System.out.println(contentType); 

contentType은 "text/html; charset = EUC-KR"입니다. (다른 로케일에서는 다를 수 있음) 문서의 인코딩은 contentType 중 하나와 동일합니다.URLConnection 응답의 문서 인코딩 지정

하지만 웹 브루 사 (IE, Firefox, Opera 등 ...)를 사용하여 동일한 URL ("http://google.com")에 액세스하면 UTF-8로 인코딩 된 페이지라고합니다. (실제로 문서 인코딩은 UTF-8입니다.)

UTF-8로 인코딩 된 URLConnection을 가져오고 싶지만 API가없는 것으로 보입니다. 어떻게해야합니까?

답변

1

직접 답변을 찾았습니다.

Google은 요청시 Accept-Charset 속성을 확인하지 않지만 User-Agent를 확인합니다. User-Agent가 지정되고 잘 알려진 경우 (Opera, Mozila 등), Google은 UTF-8로 응답을 보냅니다. 그렇지 않으면 응답은 EUC-KR이됩니다 (다른 환경에서는 다를 수 있음).

그래서 여기에 답이 있습니다. 연결하기 전에이 줄을 추가하십시오.

connection.setRequestProperty("User-Agent", "Opera/9.80"); 

다른 에이전트를 선호 할 수도 있습니다. (mozila, etc ...)