❮
[GO] EUCKR 을 UTF8 으로 변환
20200610
코드 먼저
배경
Go 에서는 유니코드를 사용해서 문자열을 표시합니다. 그 중에서도 표준인 UTF-8 을 사용하는데, 이건 Go를 만든 켄 톰슨과 롭 파이크의 또 다른 작품입니다. 유니코드는 세상의 모든 문자와 기호, 컨트롤 코드 각각을 하나의 숫자에 대응시킵니다. 이 숫자를 Unicode code point 라고 하고 Go 에서는
rune 이라고 부릅니다.
Go의 소스 파일도 항상 UTF-8 으로 인코딩 됩니다. 덕분에 인코딩 문제로 골치 아플 일은 없습니다. 윈도우에서 짠 C 코드를 맥에서 열었을 때 전부 깨져있는 경험이나, 파이썬에서 첫 줄에 인코딩을 지정해주는 귀찮음 같은 걸 몰라도 됩니다.
다른 것들도 전부 UTF-8 만 있으면 좋겠지만, 아직도 웹에서는 고정 길이 2byte라는 점 때문에 EUC-KR을 사용하는 페이지가 많습니다.
한국에서 주로 쓰는 윈도우에서는 EUC-KR을 확장한 CP949 를 사용합니다. 메모장에서 만든 txt파일이나 엑셀에서 변환한 csv파일 등등이 CP949 로 인코딩 되어있고, 이런 파일들을 Go 에서 그냥 읽으면 전부 깨져서 나올겁니다. UTF-8로 변환이 필요합니다.
Encoding 패키지
text/encoding 패키지는 따로 설치를 해줘야 합니다. 아래 명령을 입력하는게 가장 간단합니다.
go get -u golang.org/x/text
라이브러리를 쓰기 싫다
아래 소스를 연구해보세요.