Shift_JIS to UTF-8 in Go

Go で Shift_JIS を UTF-8 に変換.

Go で HTML の scraper を書いていると、 日本語の HTML の scraper に恒例の Shift_JIS の conversion が必要になったのでメモ.

  1. Script
  2. See Also

Script

string -> Reader -> (decoded)  Reader -> []byte -> string

と変換していく.

package main

import (
	"golang.org/x/text/encoding/japanese"
	"golang.org/x/text/transform"
	"io/ioutil"
	"strings"
)

func shiftJIS2UTF8(str string) (string, error) {
	strReader := strings.NewReader(str)
	decodedReader := transform.NewReader(strReader, japanese.ShiftJIS.NewDecoder())
	decoded, err := ioutil.ReadAll(decodedReader)
	if err != nil {
		return "", err
	}
	return string(decoded), err
}

See Also