반응형

이번에 어플을 만들면서 아주 쉽게 할 수 있었는데도 불구하고 찾아보지도 않고 끙끙댔던 인코딩 문제가 있었습니다.
쉽다고 생각했기 때문에 더 길을 찾지 못 했는지도 모르겠어요^^;
안 그래도 초보인데 워낙 프로그래밍을 안하다보니 ㅠㅠ

네이버 검색 API에 들어가는 키워드는 UTF-8 인코딩이라고해서
예전에 DB에 값을 넣고 받아오거나 할때의 기억을 살려서 UTF-8로 인코딩을 해봤지만 소용이 없더군요.

절망에 빠졌는데.. 이런.. 그랬습니다.
이전까지 제 경험과 다른 점이 있군요.

바로 API에 요청을 URL로 보낸다는 것입니다.
그리고 자바의 환경과 안드로이드의 환경 차이도 있겠지요?? (물음표인 이유는 저도 궁금해서..ㅎㅎ)
그래서 인코딩시 URLEncoder를 사용해야합니다.

제가 범했던 실수는 바로 이것입니다.
이러니 에러가 날 수 밖에 없었군요. URL에 표시되는 것과는 다르니까요.
처음에 정말 당당하게 이런 코드를 작성했습니다. 그러나 낭패 ^^;;

    String keyword = "편의점"; //이부부은 검색어를 UTF-8로 넣어줄거임.
    System.out.println("변환전:"+keyword);
    String query = null;
    try {
        query = new String(keyword.getBytes("8859_1"), "UTF-8");
    } catch (UnsupportedEncodingException e1) {
        e1.printStackTrace();
    }
      System.out.println("변환후 :"+query);
  
     try{
            URL url = new URL("http://openapi.naver.com/search?"
           +"key="+key
           +"&query="+query
           +"&target=local&start=1&display=4");

LogCat에 이렇게 엉뚱하게 변환 된 것이 기록 되었네요^^; 이건 뭔지;;


애뮬에도 아무것도 파싱되지 않았습니다;; 요청 URL이 에러니 뭔가 나올 거리가 없죠. 에러 태그에 대한 처리를 하지 않은 이상.


같이 어플 만드는 동생이 URLEncoder를 사용하니 바로 해결 되더군요. 짜잔~^^ 원래 알고 계셨던 분들은 피식 웃으실지도 모르지만 저에겐 대단한 발견이었습니다. 
  String keyword = "편의점"; //이부부은 검색어를 UTF-8로 넣어줄거임.  
  System.out.println("변환전:"+keyword);    
  String query = null;
  try {
   query = URLEncoder.encode(keyword,"UTF-8");
  } catch (UnsupportedEncodingException e1) {
   e1.printStackTrace();
  }  
  System.out.println("변환후 :"+query);    
        try{
            URL url = new URL("http://openapi.naver.com/search?"
           +"key="+key
           +"&query="+query
           +"&target=local&start=1&display=4");

LogCat에 깔끔하게 UTF-8로 변환된 것을 확인 했습니다.


애뮬에도 편의점에 대한 검색요청의 결과가 파싱되었습니다^^

반응형

+ Recent posts