안녕하세요 통신 라이브리러 volley에 대해서 물어볼게 있어서 이렇게 올립니다.
조회수 1877회
안녕하세요 http client를 쓰다가 volley를 써볼려고 하는데 서버에서는 EUC-KR만 보내 줄수 있어서 시도를 해보던 중에 계속 한글이 깨져서 와서 이렇게 올립니다.
volley는
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "EUC-KR"));
구문처럼 스트림 자체를 읽어올수 있는게 없는지 제가 영어를 잘못해서 그렇기도 하지만 ㅠㅠ 한글이 들어오는 String을 Endcoder로도 해봤지만 소용이 없어서 이렇게 남깁니다 도와주세요 ㅠㅠ.. 읽어주셔서 감사합니다.
-
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
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
-
댓글 입력