반응형

Eclipse에서 javadoc 생성을 하려는데
아래와 같은 에러가 났습니다.

javadoc unmappable character for encoding MS949

코드의 주석에 한글(UTF-8로 인코딩된)을 써서 그런 것 같아 구글링 해봤더니 역시나 그 문제 였네요.

해결 방법은 아래 창이 나타났을 때
VM options

-encoding UTF-8

을 적어주면 해결 됩니다.
그러면 한글이 포함된 JavaDoc을 생성할 수 있습니다.


 

반응형
반응형

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

네이버 검색 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로 변환된 것을 확인 했습니다.


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

반응형
반응형

파이썬에서는 영어는 물론 한글도 문제없이 화면에 출력됩니다. 하지만 이런 출력이 내 컴퓨터뿐 아니라 다른 사람의 컴퓨터 특히 다른 언어권과 운영체제에서도 동일하다고는 확언할 수 없습니다.

세계 각국의 다양한 문자 표현하기 위한 표현 방식을 인코딩(Encoding)이라고 합니다.

각각의 언어권마다 서로 다른 인코딩을 사용한다면 프로그램을 다른 나라 사람도 사용하게 하려면 엄청 애를 먹을 겁니다. 그래서 세계의 모든 문자를 한 방식으로 표현할 수 있는 유니코드(Unicode)를 사용합니다.



파이썬 3.x 에서는 일반 문자열이 기본적으로 유니코드입니다. 즉 프로그램에서 글씨가 깨질 걱정을 할 필요가 없는 것입니다. 유니코드를 제외한 나머지 인코딩된 문자는 bytes로 표현됩니다.
그리고 문자를 특정 코드로 인코딩하고 싶을 때는 encode()를 사용하고




어떤 문자의 유니코드 값을 알고 싶을 떄는 ord()를 사용하고




어떤 유니코드 값에 해당하는 문자를 알고 싶을 때는 chr()을 사용합니다.





현재 시스템의 인코딩이 뭔지 알고 싶을 때는 아래와 같이 확일 할 수 있습니다.

반응형

+ Recent posts