[질문] Ruby 1.9 부터 windows에서 "invalid byte sequence in cp949"라는 에러 메시지가 나옵니다.

1396 views
Skip to first unread message

Jun

unread,
Oct 14, 2013, 12:39:51 AM10/14/13
to rub...@googlegroups.com
루비 독학하고 있습니다. 

한문으로 만들어진 Text 파일을 가공하는 코드를 짜 보고 있는데, 

1.8x에서는 돌아가던 코드가 1.9x 이상에서는 "invalid byte sequence in cp949 <ArgumentError>"라는 에러 메시지를 내보냅니다. 

작업 환경은 Windows7(64bit)입니다. 

구체적으로는 외부의 text 문서를 받아 한문으로 만들어진 문장을 split을 이용해 자르는 작업 과정에서요. 

루비 코드 및 한문 text 문서는 모두 UTF-8로 인코딩 하였습니다. 

윈도우에서 한문의 인코딩 문제가 루비인 것 같은데, 다른 환경에서는 돌아가던 코드가 돌아가지 않으니 답답하네요. 

현재는 1.8x로 다운그레이드 해서 쓰고 있습니다. ^^;

문제 해결 방법이 아시는 분 도움 부탁드립니다. (예시 화일 함께 첨부합니다.)
a.rb
test.txt

Shim

unread,
Oct 14, 2013, 8:14:28 PM10/14/13
to rub...@googlegroups.com
osx
1.9.3-p448
2.0.0-p247
에서 `ruby a.rb`해봤습니다.

전 별문제 없이돌아가네요.

Jun

unread,
Oct 14, 2013, 8:25:58 PM10/14/13
to rub...@googlegroups.com
답글 주셔서 감사합니다. 

글에 빠뜨렸는데, 우분투에서도 문제 없이 돌아 갑니다. 

윈도우에서만 에러가 나는 것 같습니다. 

정확히는 <윈도우 + Ruby 1.9x 이상>에서만요. cp949도 윈도우에서 쓰이는 거라고 합니다. 







ikhoon

unread,
Oct 14, 2013, 8:49:57 PM10/14/13
to rub...@googlegroups.com
파일 일으면서 UTF-8옵션 주면 에러없이 동작합니다.
a.file-with-utf8.rb

Jun

unread,
Oct 14, 2013, 9:18:53 PM10/14/13
to rub...@googlegroups.com
그렇군요!  해결되었습니다!

도움 주셔서 감사합니다. 

Jun

unread,
Oct 16, 2013, 9:51:25 AM10/16/13
to rub...@googlegroups.com
예시로 올린 코드는 작동하는데, 좀 복잡한 작업을 하려니 ikhoon님 조언으로도 에러가 나네요.

다행히 삽질 끝에 아래 방법을 찾아 해결 했습니다. 저와 같은 문제를 겪으시는 분들 참고하세요.
Encoding.default_external = "UTF-8" if defined? Encoding

Jun

unread,
Oct 28, 2013, 8:02:22 PM10/28/13
to rub...@googlegroups.com
좋은 조언 감사드립니다. force_encoding이란 것이 있었네요. ^^; 
이야기하신 방법 유용하게 사용하겠습니다. 

김두형

unread,
Jan 11, 2015, 9:33:45 PM1/11/15
to rub...@googlegroups.com
저도 이런 에러가 나는데 -> Encoding.default_external = "UTF-8" if defined? Encoding 이건 어디다 써주면 되는건가요 ?

2013년 10월 16일 수요일 오후 10시 51분 25초 UTC+9, Jun 님의 말:

Jun

unread,
Jan 13, 2015, 8:22:22 PM1/13/15
to rub...@googlegroups.com
해당 코드 맨 위쪽에 써 주시면 됩니다. 

만약 run.rb로 작업하고 계시다면 해당 run.rb에서 문제가 될만한 문자열을 인식하기 전에 Encoding.default_external = "UTF-8"라고 외부 인코딩을 정의 하는 것이죠.

저도 고민 하다가 결국 우분투로 왔습니다. 윈도우에서 인코딩 문제가 생각보다 복잡해서 완전히 해결할 수 없었습니다. 

그리고 run.rb에서 plain text를 읽어들여 작업하시는 거라면, plain text 자체를 utf-8로 저장해야 합니다. 되도록 윈도우 메모장 말고 다른 것을 사용하시는게 좋구요. 




Reply all
Reply to author
Forward
Message has been deleted
0 new messages