file --mime
で文字コードを判定しようとしたら charset=unknown-8bit
と表示されてしまったので、nkf --guess
したところShift_JISであることが分かった。
$ file --mime unknown.txt
unknown.txt: text/plain; charset=unknown-8bit
$ brew install nkf
$ nkf --guess unknown.txt
Shift_JIS (CRLF)
このファイルをGoで扱うにはjapanese packageでエンコード/デコードする。 ShiftJISのほかにEUCJPとISO2022JPをサポートしている。
import (
"bytes"
"golang.org/x/text/encoding/japanese"
"golang.org/x/text/transform"
)
transform.NewReader(bytes.NewReader(b), japanese.ShiftJIS.NewDecoder())