안드로이드 개발 질문/답변 
    (글 수    45,052)
        	
        
        
    웹페이지의 경우 인코딩을 알아야 한다고 이즈라엘 님께서 말씀 하셨었는데..
웹페이지에서 메시지 한줄을 activity 의 dialog로 출력하고 싶은데...
인코딩은 ecu-kr로 되어있구요... 
이럴 경우 안드로이드 쪽에서는 뭘 어떻게 해줘야 하는거죠..?
제 짧은 지식으론 혼자서 해결할 수가 없네요 ㅠㅠ
---------------------------------------------------------
추가 글 입니다.
http connect가 아닌 소켓 연결해서 bufferedinputstream으로 데이터를 읽어옵니다.
                2010.08.05 17:37:15                            
            
                        
            HttpClient, HttpGet 또는 HttpPost, HttpEntity등을 사용해야 합니다. 사용방법은 아래를 참고하세요
                                
            http://www.androidpub.com/284478
                2010.08.05 19:38:18                            
            
                        
            접속하는 웹페이지의 인코딩이 어떤방식으로 되어 있는지를 사람이 fix 값으로 지정하면 환경변화에 적응하지 못합니다.
HTTP 규약에 응답 해더중 Content-type에 사용 케릭터 셋을 반환하도록 되어 있으니 이것을 이용하면 됩니다.
케릭터셋을 알아 냈으면 해당 케릭터 셋으로 인코딩 해야 하는데 bufferedinputstream을 사용하면 별도의 컨버팅작업이 필요하므로, BufferedReader 를 사용하여 정확한 케릭터셋으로 인코딩하여 읽어 냅니다.
URL url = new URL("http://어쩌고저쩌고");
HttpURLConnection huc = (HttpURLConnection)url.openConnection();
String contentType = huc.getContentType();
Pattern ptnCharset = Pattern.compile("charset\\=(\\S+)", Pattern.CASE_INSENSITIVE);
Matcher mchCharset = ptnCharset.matcher(contentType);
String charset;
String line;
if (mchCharset.find()) {
charset = mchCharset.group(1);
} else {
// 케릭터셋 정보 없슴 . 예외 처리 혹은 기본값 적용
charset = "euc-kr";
}
BufferedReader brd = new BufferedReader(new InputStreamReader(huc.getInputStream(), charset));
try {
while ((line = brd.readLine())!= null) {
// 한줄씩 처리
System.out.println(line);
}
} finally {
brd.close();
}
오타 오동작 있을수 있으며, line 변수를 이용하여 라인단위로 처리해도 좋겠지만 StringBuffer에 append 하여 컨탠츠 전체를 보관한후 처리해도 좋겠습니다.
                                
            HTTP 규약에 응답 해더중 Content-type에 사용 케릭터 셋을 반환하도록 되어 있으니 이것을 이용하면 됩니다.
케릭터셋을 알아 냈으면 해당 케릭터 셋으로 인코딩 해야 하는데 bufferedinputstream을 사용하면 별도의 컨버팅작업이 필요하므로, BufferedReader 를 사용하여 정확한 케릭터셋으로 인코딩하여 읽어 냅니다.
URL url = new URL("http://어쩌고저쩌고");
HttpURLConnection huc = (HttpURLConnection)url.openConnection();
String contentType = huc.getContentType();
Pattern ptnCharset = Pattern.compile("charset\\=(\\S+)", Pattern.CASE_INSENSITIVE);
Matcher mchCharset = ptnCharset.matcher(contentType);
String charset;
String line;
if (mchCharset.find()) {
charset = mchCharset.group(1);
} else {
// 케릭터셋 정보 없슴 . 예외 처리 혹은 기본값 적용
charset = "euc-kr";
}
BufferedReader brd = new BufferedReader(new InputStreamReader(huc.getInputStream(), charset));
try {
while ((line = brd.readLine())!= null) {
// 한줄씩 처리
System.out.println(line);
}
} finally {
brd.close();
}
오타 오동작 있을수 있으며, line 변수를 이용하여 라인단위로 처리해도 좋겠지만 StringBuffer에 append 하여 컨탠츠 전체를 보관한후 처리해도 좋겠습니다.












