Go では、標準ライブラリはすべてのテキスト ファイルに対して UTF-8 エンコーディングを前提としています。ただし、他の文字セットでエンコードされたファイルには当てはまらない場合があります。この記事では、golang.org/x/text/encoding パッケージを使用して Go で非 UTF-8 テキスト ファイルを読み取る方法について説明します。
golang.org/x/text/encoding パッケージは、汎用のインターフェイスを提供します。 UTF-8 との間で変換できる文字エンコーディング。たとえば、golang.org/x/text/encoding/simplifiedchinese サブパッケージは、GB18030、GBK、および HZ-GB2312 のエンコーダーを提供します。
例: GBK エンコード ファイルの読み取り
package main import ( "bufio" "fmt" "log" "os" "golang.org/x/text/encoding/simplifiedchinese" "golang.org/x/text/transform" ) func main() { const filename = "example_GBK_file" // Read UTF-8 from a GBK encoded file f, err := os.Open(filename) if err != nil { log.Fatal(err) } r := transform.NewReader(f, simplifiedchinese.GBK.NewDecoder()) // Read converted UTF-8 from `r` as needed sc := bufio.NewScanner(r) for sc.Scan() { fmt.Printf("Read line: %s\n", sc.Bytes()) } if err := sc.Err(); err != nil { log.Fatal(err) } if err = f.Close(); err != nil { log.Fatal(err) } }
この例では、transform.NewReader を使用して、 os.File オブジェクトを使用し、GBK から UTF-8 へのオンザフライ デコードを実行します。
追加メモ:
以上がGo で非 UTF-8 エンコードされたテキスト ファイルを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。