ISO 8859-1 でエンコードされた文字列を UTF-8 に変換しようとしています。
次の関数は、ドイツ語のウムラウトを含むテストデータで動作しますが、rune(b) キャストがどのソース エンコーディングを想定しているかはよくわかりません。ISO8859-1 など、何らかのデフォルトのエンコーディングを想定していますか、それとも使用するエンコーディングを指定する方法はありますか?
func toUtf8(iso8859_1_buf []byte) string {
var buf = bytes.NewBuffer(make([]byte, len(iso8859_1_buf)*4))
for _, b := range(iso8859_1_buf) {
r := rune(b)
buf.WriteRune(r)
}
return string(buf.Bytes())
}