Go언어는 기본적으로 UTF-8을 인코딩으로 사용합니다만. 윈도의 경우 기본적으로 CP949 또는 UTF-16입니다. 한글 윈도를 설치한 경우에는 많은 경우에 CP949가 기본 인코딩인 경우가 대부분이라 exec 패키지 등으로 콘솔 명령어를 실행하고 결과를 받아서 사용하는 등의 경우에 한글문자가 깨지는 문제를 겪을 수 있습니다.
이때 사용할수 있는 인코딩 변환 코드입니다.
Go
import (
"golang.org/x/text/encoding/korean"
"golang.org/x/text/transform"
)
/**
* ansi string을 utf8로 변환
**/
func ansiToUni(src []byte) []byte {
got, _, _ := transform.String(korean.EUCKR.NewDecoder(), string(src))
return []byte(got)
}
func ansiToUniString(src string) string {
got, _, _ := transform.String(korean.EUCKR.NewDecoder(), src)
return got
}
/**
* uniToAnsi
**/
func uniToAnsi(src []byte) []byte {
got, _, _ := transform.String(korean.EUCKR.NewEncoder(), string(src))
return []byte(got)
}