Go言語でShiftJISのファイルを読む

go.textパッケージを使う

$ go get code.google.com/p/go.text/encoding
$ go get code.google.com/p/go.text/encoding/japanese


使い方を調べるためにsjisのファイルをeucjpに変換してコピーする処理を書いてみた

package main

import (
	"code.google.com/p/go.text/encoding/japanese"
	"code.google.com/p/go.text/transform"
	"flag"
	"io"
	"os"
)

func main() {
	flag.Parse()

	// 読み込むファイル
	read_file, _ := os.OpenFile(flag.Arg(0), os.O_RDONLY, 0600)
	defer read_file.Close()

	// 書き込むファイル
	write_file, _ := os.OpenFile(flag.Arg(1), os.O_WRONLY|os.O_CREATE, 0600)
	defer write_file.Close()

	reader := transform.NewReader(read_file, japanese.ShiftJIS.NewDecoder())
	writer := transform.NewWriter(write_file, japanese.EUCJP.NewEncoder())

	io.Copy(writer, reader)
}