Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Membaca dan Menulis Fail Teks Bukan UTF-8 Dikodkan dalam Go?

Bagaimana untuk Membaca dan Menulis Fail Teks Bukan UTF-8 Dikodkan dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-04 20:40:12
asal
948 orang telah melayarinya

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

Membaca dan Menulis Fail Teks Bukan UTF-8 dalam Go

Latar Belakang

Oleh lalai, perpustakaan standard dalam Go menganggap bahawa fail teks dikodkan dalam UTF-8. Walau bagaimanapun, terdapat senario di mana anda mungkin menghadapi fail teks yang dikodkan dalam pengekodan berbeza, seperti GBK.

Penyelesaian

Untuk membaca dan menulis fail teks bukan UTF-8 dalam Go, anda boleh menggunakan langkah berikut:

Membaca Bukan UTF-8 Fail

  1. Import pakej yang diperlukan: import "golang.org/x/text/encoding/simplifiedchinese"
    Pakej ini menyediakan GB18030, GBK dan HZ -GB2312 pelaksanaan pengekodan.
  2. Buat an io.Reader menggunakan transform.NewReader:

    f, err := os.Open(filename)
    if err != nil {
        log.Fatal(err)
    }
    r := transform.NewReader(f, simplifiedchinese.GBK.NewDecoder())
    Salin selepas log masuk

Menulis Fail Bukan UTF-8

  1. Import pakej yang sama: import "golang.org/x/text/encoding/simplifiedchinese"
  2. Buat io.Writer menggunakan transform.NewWriter:

    f, err := os.Create(filename)
    if err != nil {
        log.Fatal(err)
    }
    w := transform.NewWriter(f, simplifiedchinese.GBK.NewEncoder())
    Salin selepas log masuk

Contoh

Contoh berikut menunjukkan cara untuk baca dan tulis fail teks berkod GBK:

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)
    }
}
Salin selepas log masuk

Kod ini membuka fail teks berkod GBK, membaca kandungannya dan menulisnya ke fail teks berkod GBK yang lain.

Atas ialah kandungan terperinci Bagaimana untuk Membaca dan Menulis Fail Teks Bukan UTF-8 Dikodkan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan