안녕하세요 통신 라이브리러 volley에 대해서 물어볼게 있어서 이렇게 올립니다.


안녕하세요 http client를 쓰다가 volley를 써볼려고 하는데 서버에서는 EUC-KR만 보내 줄수 있어서 시도를 해보던 중에 계속 한글이 깨져서 와서 이렇게 올립니다.

volley는

BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "EUC-KR"));

구문처럼 스트림 자체를 읽어올수 있는게 없는지 제가 영어를 잘못해서 그렇기도 하지만 ㅠㅠ 한글이 들어오는 String을 Endcoder로도 해봤지만 소용이 없어서 이렇게 남깁니다 도와주세요 ㅠㅠ.. 읽어주셔서 감사합니다.

  • 2016년 10월 17일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 10월 17일에 작성됨
    취준생..ㅠ_ㅠ 안드로이드요

  • 대영님 감사합니다 제가 깜빡 했네요 ㅠㅠ.. 다음부터는 이런 실수가 없도록 잘 읽으실수 있도록 좀더 신경써서 올리도록 하겠습니다 감사합니다    한정희   2016.10.17 23:38     
조회수 90


1 답변


좋아요
0
싫어요
채택취소하기

Volley는 서버에서 내려오는 Response header의 charset을 사용해서 인코딩을 합니다. 관련 코드는 아래 부분에서 확인할 수 있고요.

우선은 서버에서 내려주는 Response header의 Content-Type이 제대려 내려오는지 확인해보세요.

Content-Type: application/json; charset=euc-kr

물론 코드에서 강제로 변환할 수도 있습니다. 아래 코드를 참고해서 현재 코드에 맞게 리퀘스트 객체를 만들어보세요. 아래 코드에서 핵심은 String jsonString = new String(response.data, "euc-kr"); 입니다.

public class JsonEucKrRequest extends JsonRequest<JSONObject> {
    public JsonEucKrRequest(int method, String url, JSONObject jsonRequest,
                           Listener<JSONObject> listener, ErrorListener errorListener) {
        super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener,
                errorListener);
    }

    @Override
    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
        try {
            String jsonString = new String(response.data, "euc-kr");            
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));
        } catch (UnsupportedEncodingException e) {
            return Response.error(new ParseError(e));
        } catch (JSONException je) {
            return Response.error(new ParseError(je));
        }
    }
}

참고


  • 로니님 항상 감사드립니다 가끔 질문 올릴때마다 이렇게 잘 대답해주셔서 감사드려요!! 좀더 잘 찾아봐야 하는데 라이브러리 해석하는게 아직 미숙하네요 ㅠㅠ 좀더 발전 되서 또 돌아오겠습니다 감사합니다 늦은밤에 댓글 달아 드려서 죄송합니다 ㅠㅠ 그럼 즐거운 하루 되세요 :)    한정희   2016.10.17 23:42     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close