ホームページ >バックエンド開発 >Golang >Go で非 UTF-8 エンコードされたテキスト ファイルを読み取る方法

Go で非 UTF-8 エンコードされたテキスト ファイルを読み取る方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-01 03:29:13207ブラウズ

How to Read Non-UTF-8 Encoded Text Files in Go?

Go で非 UTF-8 テキスト ファイルを読み取る

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 の作者は、サードパーティのパッケージや cgo への依存関係を排除します。
  • 他の文字をサポートするためにエンコーディングの実装を簡単に交換できます。 Big5、Windows1252、EUCKR などのセット。
  • 詳細については、golang.org/x/text/encoding および golang.org/x/text/encoding/simplifiedchinese パッケージを参照してください。

以上がGo で非 UTF-8 エンコードされたテキスト ファイルを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。