반응형




PyScripter를 사용해서 공부를 시작하려고 하는데 이녀석이 초반부터 사람 갈 길을 막습니다.

작성할 때 한글을 포함한 문서를 저장하고 다시 불러오면 한글이 다 깨져 버리네요.

 



헉 이게 무슨 음모인가요?
포스팅 할려고 "한글"이라 하니 "?쒯?" 이라 뱉어 주시는 PyScripter님. 유머감각도 넘치셔라;;;
ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ




수업 시간에 배운 방법은 File encoding comment를 적어주는 방법이었습니다. 아래 처럼 하면 되죠.

[Edit] - [Insert Template] 을 선택해서 File encoding comment를 추가하는 것입니다.  직접 타이핑 해도 되구요.




이렇게 하면 문서를 닫고 다시 불러와도 한글이 깨지지 않습니다. 하지만 이 방법은 솔직히 좀 불편하더군요. 추가해줘야하니깐요.
(물론 아예 처음부터 추가되게 하는 방법이 있겠지만요.)

그래서 열심히 PyScripter의 메뉴를 뒤져 봤습니다!! 
안 되면 되게하라!!

역시나 친절히도 파일 포멧을 설정할 수 있는 부분이 바로 근처에 있더군요.
영어권에서 사용하는 녀석이라 파일 포멧이 ANSI로 되어 있었습니다. 
그래서 이걸 과감히 UTF-8로 바꿔 줬습니다.


다시 문서를 저장하고 불러오니 한글이 전혀 깨지지 않는군요.^^
이제 해결 했으니 다시 열공모드로 고고싱!!

아아.. 그런데..
뒤늦게 문제점 하나를 발견했습니다.ㅠㅠ
파일마다 새로 file format을 정해줘야하네요....








반응형
반응형

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

네이버 검색 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