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

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

volley는

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

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

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

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.