[ Java ][ 에러 ] Invalid byte 1 of 1-byte UTF-8 sequence.


  프로젝트 진행 중에 플렉스 쪽에 넘겨주기 위해서 XML 파일을 생성하는 부분이 있었는데, 이상하게도 한글 부분이 알 수 없는 문자로 생성되는 것이었다.

  일단 자바는 기본적으로 UTF-8이고, XML도 UTF-8로 선언해줬으니 문제될 것은 없어보였는데 여지 없이 해독 불가능한 문자가 되어버렸다.

  이클립스로 생성된 XML파일을 열어보면 [ Invalid byte 1 of 1-byte UTF-8 sequence. ]라는 오류 메시지가 표시된다. 혹시나 해서 인코딩 선언을 euc-kr로 바꿨더니 잘 생성되고 문젣 없다. 하지만 플렉스에서는 여전히 깨진 문자가 되더라.

  결국 UTF-8을 써야 하긴 하는데..., 검색을 해보니 FileWriter나 FileReader를 사용할 때 문제니 FileInputStream이나 FileOutputStream을 사용하라고 한다. 헌데 FileOutputStream으로 바꿔도 여전히 같은 문제가 나오는 게 아닌가. 계속 검색해보니 이번엔 FileInputStream이나 FileOutputStream을 쓸 때 발생하는 문제니 FileWriter나 FileReader를 쓰라고 한다. 어느 게 맞는 거야??

  하여튼 검색에 나오는 이런저런 방법들을 사용해보며 소스코드를 고치고 있자니 화면상으로 WriterToUTF8라는 문자열이 지나간다.

  "허겅. 이게 뭐지?!"

  하지만 이름만 척 봐도 FileWriter 기능을 하면서도 UTF8을 지원해줄 것 같지 않은가?

  일단 써봤다. 헉, 인자로 FileOutputStream을 넣으라고 요구한다. 팍 하고 감이 온다!

  "이...이건 진짜다!"

  그래서 UTF-8로 한글이 포함된 XML 파일을 잘 만들었다는 이야기. 하여튼 소스코드 작성할 때 문제가 있을 법한 부분마다 이클립스 자체에서 나름의 해결책을 제시해주는 기능 덕분에 살았습니다. 이클립스 만세~~~!!


    WriterToUTF8 out = null; //FileWriter로 작성한 파일은 한글이 들어갈 경우 Invalid byte 1 of 1-byte UTF-8 sequence 오류가 난다.

    try {
        // out = new FileWriter(file, true);
        out = new WriterToUTF8(new FileOutputStream(file, true));
        out.write(str);
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

  대충 이런 느낌으로 쓰면 됩니다.

by 별소리 | 2009/06/17 17:20 | ▷ 프로그래밍 관련 | 트랙백 | 덧글(0)

트랙백 주소 : http://byulbada.egloos.com/tb/2374643
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶