[질문] euc-kr 을 utf-8로 변경하려고 합니다.

3,746 views
Skip to first unread message

쥬드

unread,
Feb 23, 2012, 2:50:09 AM2/23/12
to golang-korea
딱히 다른 곳에다 질문을 올릴 데가 없어서요
golang 커뮤니티가 있는 것도 아니고 외국에다 올리자니 영어가 짧고..

charset convert 관련해서 아무리 검색을 해도 뾰족한 답변이 없어서 3일 동안 고민 끝에 질문을 올리게 되었습니다.

http://code.google.com/p/go-charset/
http://code.google.com/p/mahonia/

두군대 캐릭터 셋 변경 관련한 소스가 있는데요.

한군데는 euc-kr을 지원안하고, 둘다 소스 파악도 힘든 상태라 현재 자포자기 한 상태입니다.

특정 사이트에 html을 가져와 파싱하고 원하는 값만을 뽑아와서 통계작업하는 간단한 프로그램입니다.
우리나라 사이트에 html은 보통 euc-kr 아니면 utf-8가 대부분인데요.
utf-8은 문제가 없지만 euc-kr은 []byte로 받아서 이걸 utf-8로 변환하는게 쉽지가 않네요.

관련 기능을 찾아봐도 유니코드에서 utf-8로 변환하는 방법만 나올 뿐
euc-kr > 유니코드 나 euc-kr > utf-8로 변환하는 소스는 없더군요..
golang 소스는 바라지도 않습니다. c나 c++소스도 안보이더라구요..

자바는 한줄이면 되는데.... 자바 개발만하다가 golang을 하니 쉽지가 않네요 ^^
혹시 제가 모르는 손쉬운 방법이 없을까요?

한정일

unread,
Feb 23, 2012, 4:24:14 AM2/23/12
to golang...@googlegroups.com
안녕하세요.
C/C++에서 캐릭터 셋 변환은 libiconv 라이브러리를 많이 사용합니다. 오픈 소스이니 코드는 자유롭게 살펴볼 수 있습니다.

http://www.gnu.org/software/libiconv/

제가 Go 언어를 사용해 본적이 없어서 동작이 되는지 여부는 알 수 없지만 아래의 프로젝트를 한번 살펴보는 건 어떨까요? :)

https://github.com/oibore/go-iconv


2012년 2월 23일 오후 4:50, 쥬드 <jud...@gmail.com>님의 말:

--
* 이 그룹에 이메일로 게시하려면 다음 주소로 이메일을 보내시면 됩니다.
 golang...@googlegroups.com
* 추가 옵션을 보려면 http://groups.google.com/group/golang-korea?hl=ko?hl=ko의 그룹을 방문하세요.

쥬드

unread,
Feb 23, 2012, 5:55:01 PM2/23/12
to golang-korea
감사합니다. 유용하게 잘 쓸것 같네요..

그런데 golang 으로만 만들어진건 구현이 쉽지 않겠죠??

Taegyoon Kim

unread,
Jun 24, 2013, 4:29:25 AM6/24/13
to golang...@googlegroups.com
이상한 게 http.Get으로 받은 euc-kr 문자열이 go 1.0에서는 잘 표시가 되었는데 1.1부터 깨지네요..
 
 
위 링크에 있는 소스 코드를 go 1.0에서 컴파일하면 "▼" 글자가 잘 나오는데 1.1에서 컴파일하면 깨집니다. 버그인지..
 

2012년 2월 23일 목요일 오후 4시 50분 9초 UTC+9, 쥬드 님의 말:

jaehoon

unread,
Jun 24, 2013, 6:51:14 AM6/24/13
to golang...@googlegroups.com
이상하게 답글이 달리지를 않네요,,;;

go-iconv를 이용해 보세요.
저는 윈도우가 아닌 리눅스환경에서 테스트를 해보긴 했는데, 잘되는것 같습니다.


...
dlist := re.FindString(sbody)
cd, err := iconv.Open("UTF-8", "EUC-KR")
if err != nil {
...
}
str, err := cd.Conv(dlist)
//fmt.Println(dlist)
fmt.Println(str)

와 같이 해보시면 될 것 같습니다.


2012년 2월 23일 목요일 오후 4시 50분 9초 UTC+9, 쥬드 님의 말:
딱히 다른 곳에다 질문을 올릴 데가 없어서요

Taegyoon Kim

unread,
Jun 24, 2013, 7:29:31 AM6/24/13
to golang...@googlegroups.com
답글 감사합니다.. 그런데 이렇게 해 봐도 여전히 안 되네요 ㅠㅠ
 
리눅스 환경에서 원래도 잘 나왔던 거 아닌지요??
 
 
라이브러리 소스를 보니 libiconv에 의존성이 있는 것 같습니다: import "C"
 
 

2013년 6월 24일 월요일 오후 7시 51분 14초 UTC+9, jaehoon 님의 말:

jaehoon

unread,
Jun 24, 2013, 7:52:10 AM6/24/13
to golang...@googlegroups.com
네,,기존에 작성하신 소스로 빌드를 해보면 이상한 문자를 찍고 있네요,,

윈도우에서 테스트를 해보신건가요? 
윈도우 콘솔창은 utf-8 형식으로 변경을 해주신거죠? 기본은 cp-949입니다.
실행까지 해신것 같으니,,,go get 하실때 go-iconv는 오류없이 빌드는 잘 되셨을테구요,,

흠 제가 알고 있는 미천한 지식은 이제 바닥이 난것 같네요,,,^^;

다른 고수님들이 답변을 좀 더 달아 주시면 좋을 듯 하네요,,,

도움을 못드려서,,,죄송합니다,,,ㅜㅜ

2013년 6월 24일 월요일 오후 8시 29분 31초 UTC+9, Taegyoon Kim 님의 말:

Homin Lee

unread,
Jun 25, 2013, 3:40:44 AM6/25/13
to golang...@googlegroups.com
아.. 이 질문을 이제야 봤네요 운영잔데 이래도 되나...
고 언어에 대한 활발한 질답은 구글+의 커뮤니티에서 이루어 지고 있습니다.
여기보다 거기에 올리시는게 답변을 더 빨리 받으실 수 있어요.


----
자 그럼 본론,

cgo는 C라이브러리를 쓰기 위한 확장으로 항상 쓸 수 있지는 않습니다. (AppEngine 등에 올리려면 안되죠)
go-iconv에 필요한 C 라이브러리 libconv는 왠만한 리눅스 환경에는 기본으로 설치되어 있어 원래 그냥
되야 될 것 같은데, 암튼 안되신다니까..

제가 pure-Go 로 cp949 from/to utf-8 라이브러리를 만들어 둔게 있어요. 다음은 링크:


이걸 한 번 써보시면 어떠실까요?
저도 라이브러리를 만들면서 테스트로만 확인한 상태라
사용하신다면 아마 첫 실용 사례가 될 것 같아 기대가 큽니다. ㅎ

라이브러리 사용시 궁금하신거나 문제가 있으시면,
되도록 구글+ 커뮤니티에 올려 주세요. 제가 그쪽을 메일링 보다 더 자주 확인해요.

감사합니다.
이호민 드림.

2013년 6월 24일 월요일 오후 8시 29분 31초 UTC+9, Taegyoon Kim 님의 말:
답글 감사합니다.. 그런데 이렇게 해 봐도 여전히 안 되네요 ㅠㅠ
Reply all
Reply to author
Forward
0 new messages