Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Membaca Fail Teks Berkod Bukan UTF-8 (mis., GBK) dalam Go?

Bagaimana untuk Membaca Fail Teks Berkod Bukan UTF-8 (mis., GBK) dalam Go?

Susan Sarandon
Lepaskan: 2024-12-01 12:37:16
asal
700 orang telah melayarinya

How to Read Non-UTF-8 Encoded Text Files (e.g., GBK) in Go?

Membaca Fail Teks Bukan UTF-8 dalam Go

Membaca dan menulis fail teks bukan UTF-8 boleh mencabar dalam Go sejak perpustakaan standard menganggap pengekodan UTF-8. Artikel ini menangani isu ini dan menyediakan penyelesaian menyeluruh menggunakan sub-repositori Go.

Masalah:

Bagaimanakah kita boleh membaca fail teks yang dikodkan dalam format bukan UTF-8 , seperti GBK, dalam Pergi?

Penyelesaian:

Untuk membaca fail dalam pengekodan bukan UTF-8, kami menggunakan pakej golang.org/x/text/encoding. Pakej ini mentakrifkan antara muka untuk pengekodan aksara generik yang memudahkan penukaran kepada dan dari UTF-8.

Khususnya, untuk pengekodan GBK, kami menggunakan subpakej golang.org/x/text/encoding/simplifiedchinese, yang menyediakan pelaksanaan pengekodan GB18030, GBK dan HZ-GB2312. Pelaksanaan ini melaksanakan pengekodan.Antara muka pengekodan.

Pelaksanaan:

Berikut ialah contoh yang menunjukkan pembacaan dan penulisan GBK yang dikodkan fail:

package main

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

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

var enc = simplifiedchinese.GBK

func main() {
    // Example filename
    const filename = "example_GBK_file"

    exampleWriteGBK(filename)
    exampleReadGBK(filename)
}

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

    // Convert GBK to UTF-8 on the fly
    r := transform.NewReader(f, enc.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)
    }
}

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

    w := transform.NewWriter(f, enc.NewEncoder())

    // Example text with Chinese characters
    _, 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)
    }
}
Salin selepas log masuk

Taman Permainan:

https://go.dev/play/p/fFIy9VES6cL

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

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