2009년 06월 17일
[ 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)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]