13

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())
}
4

2 に答える 2

2

の効果

r := rune(expression)

は:

  • rタイプrune(int32のエイリアス)で変数を宣言します。
  • rexpresionの値で変数を初期化します。

(再)エンコードは含まれず、オプションでどちらを使用するかを指定するには、コードで再エンコードを明示的に記述/処理する必要があります。幸い、この場合、(再)エンコードは必要ありません。Unicodeは、ASCIIと同等の方法でISO8859-1のコードを組み込みました。(ここで正しくチェックした場合)

于 2012-11-22T11:16:12.033 に答える