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
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())
Menulis Fail Bukan UTF-8
Buat io.Writer menggunakan transform.NewWriter:
f, err := os.Create(filename) if err != nil { log.Fatal(err) } w := transform.NewWriter(f, simplifiedchinese.GBK.NewEncoder())
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) } }
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!