마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

인터넷으로 가져온 rss 뉴스 한글이 깨집니다.

0 추천

안녕하세요 안드로이드펍 가족님들.

 

http로 rss뉴스 가져올려고하는데요 

가져온것을 로그찍어보면 한글만깨집니다.

ecoding은 euc-kr로 되어있더라구요

 

그래서 인터넷으로 찾아보니까 euc-kr을 utf-8로 바꾸는소스가있어서 해봤는데도 깨지던데요.

 

try {

Log.e("kim", new String(strXml.getBytes("8859_1"),"utf-8"));

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

Log.e("kim", new String(strXml.getBytes("8859_1"),"euc-kr"));

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 

위와같이 했는데도 둘다 한글이 깨집니다

 

그래서 가져올때부터 잘못되었나해서

 

HttpPost postRequest = new HttpPost( mPostUrl);

postRequest.setHeader("Accept-Charset","euc-kr");

MultipartEntity reqEntity = new MultipartEntity(); // HttpMultipartMode.BROWSER_COMPATIBLE);

 

if(attachedImage!=null){

ByteArrayOutputStream bos = new ByteArrayOutputStream();

attachedImage.compress(Bitmap.CompressFormat.PNG, 100, bos);

byte[] data = bos.toByteArray();

attachedImage.recycle();

attachedImage = null;

 

ByteArrayBody bab = new ByteArrayBody( data, "userimg.png");

reqEntity.addPart("photo", bab);

 

}

if( params != null && params.length > 0){

List<NameValuePair> additParams = params[0];

Charset chars = Charset.forName("euc-kr");

for( int i=0; i < additParams.size(); i++){

BasicNameValuePair hash = (BasicNameValuePair)additParams.get(i);

reqEntity.addPart(hash.getName(), new StringBody( hash.getValue(),chars ));

}

}

 

위와같이 했는데도 깨지네요 ㅜㅜ 

해답이먼가요.

http://www.sportalkorea.com/news/rss/news_top.xml

흠바바 1 (4,000 포인트) 님이 2014년 5월 26일 질문

1개의 답변

0 추천
public String loadXml(String addr) throws Exception {
        URL url = new URL(addr);
        URLConnection conn = url.openConnection();
 
        conn.setDoOutput(true);
        conn.setDoInput(true);
//        conn.setConnectTimeout(connTimeout);
//        conn.setReadTimeout(readTimeout);
        conn.connect();
 
        InputStream input   = new BufferedInputStream(url.openStream());
        int count;
        byte data[] = new byte[2048];
 
        StringBuilder sb = new StringBuilder();
        while ((count = input.read(data)) != -1) {
 
            sb.append(new String(data, "EUC-KR"));
            Thread.sleep(1);
        }
 
        input.close();
 
        return sb.toString();
    }
 
aucd29 (218,390 포인트) 님이 2014년 5월 27일 답변
...