首頁 > 後端開發 > Golang > 如何在Go中讀寫非UTF-8編碼的文字檔?

如何在Go中讀寫非UTF-8編碼的文字檔?

Mary-Kate Olsen
發布: 2024-12-04 20:40:12
原創
978 人瀏覽過

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

在Go 中讀寫非UTF-8 文字檔案

背景

作者

背景

作者

作者。情況下,Go 中的標準庫假定文字檔採用UTF-8 編碼。但是,在某些情況下,您可能會遇到以不同編碼編碼的文字文件,例如 GBK。

解決方案

讀寫非 UTF-8 文字檔案在 Go 中,您可以使用以下步驟:
  1. 讀取非UTF-8檔案
  2. 匯入必要的套件: import "golang.org/x/text/encoding/simplifiedchinese"此套件提供GB18030、GBK 、HZ -GB2312編碼

    f, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    r := transform.NewReader(f, simplifiedchinese.GBK.NewDecoder())
    登入後複製
使用transform.NewReader建立一個io.Reader:

  1. 寫- 8檔
  2. 導入同一個套件: import "golang.org/x/text/encoding/simplifiedchinese"

    f, err := os.Create(filename)
    if err != nil {
        log.Fatal(err)
    }
    w := transform.NewWriter(f, simplifiedchinese.GBK.NewEncoder())
    登入後複製

使用創建io.Writer transform.NewWriter:

import (
    "bufio"
    "fmt"
    "log"
    "os"

    "golang.org/x/text/encoding/simplifiedchinese"
    "golang.org/x/text/transform"
)

func main() {
    const filename = "example_GBK_file"
    exampleWriteGBK(filename)
    exampleReadGBK(filename)
}

func exampleReadGBK(filename string) {
    f, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }

    r := transform.NewReader(f, simplifiedchinese.GBK.NewDecoder())

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

func exampleWriteGBK(filename string) {
    f, err := os.Create(filename)
    if err != nil {
        log.Fatal(err)
    }

    w := transform.NewWriter(f, simplifiedchinese.GBK.NewEncoder())

    // Write some text from the Wikipedia GBK page that includes Chinese
    _, err = fmt.Fprintln(w,
        `In 1995, China National Information Technology Standardization
Technical Committee set down the Chinese Internal Code Specification
(Chinese: 汉字内码扩展规范(GBK); pinyin: Hànzì Nèimǎ
Kuòzhǎn Guīfàn (GBK)), Version 1.0, known as GBK 1.0, which is a
slight extension of Codepage 936. The newly added 95 characters were not
found in GB 13000.1-1993, and were provisionally assigned Unicode PUA
code points.`)
    if err != nil {
        log.Fatal(err)
    }

    if err := f.Close(); err != nil {
        log.Fatal(err)
    }
}
登入後複製

範例

以下範例示範如何讀取和寫入GBK 編碼的文字檔案:以下範例示範如何讀寫GBK 編碼的文字檔案:此程式碼開啟GBK編碼的文字文件,讀取其內容,並將其寫入另一個 GBK 編碼的文字檔案。

以上是如何在Go中讀寫非UTF-8編碼的文字檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板