Apabila menggunakan golang untuk menulis fail, kadangkala kandungan fail akan bercelaru Ini kerana golang menggunakan pengekodan UTF-8 untuk menulis fail secara lalai. Jika anda menggunakan pengekodan lain semasa menulis fail, aksara bercelaru akan berlaku.
Jadi, bagaimana kita boleh mengelakkan masalah fail bercelaru yang ditulis dalam golang? Berikut ialah beberapa penyelesaian:
Jika anda ingin mengelakkan aksara bercelaru, cara paling mudah ialah menggunakan pengekodan UTF-8. Dalam golang, anda boleh menetapkan pengekodan semasa menulis fail melalui kod berikut:
file, err := os.Create("test.txt") if err != nil { log.Fatal(err) } defer file.Close() file.WriteString("") // 写入UTF-8的BOM字符 writer := bufio.NewWriter(file) encoder := unicode.UTF8.NewEncoder() writer = transform.NewWriter(writer, encoder) _, err = writer.WriteString("这是一段中文文本") if err != nil { log.Fatal(err) }
Aksara BOM digunakan dalam kod ini untuk menunjukkan bahawa fail menggunakan pengekodan UTF-8. Pastikan teks bertulis dikodkan UTF-8 dengan menggunakan pengekod pengekod UTF8 dan transformasi penukar pada aliran tulis.
Selain menggunakan pengekodan UTF-8, golang juga menyokong banyak pengekodan lain. Anda boleh menggunakan pakej pengekodan/pinyin untuk menukar teks kepada pengekodan tertentu, seperti GBK atau Big5.
Berikut ialah contoh kod yang menggunakan pengekodan GBK untuk menulis teks pada fail:
file, err := os.Create("test.txt") if err != nil { log.Fatal(err) } defer file.Close() writer := bufio.NewWriter(file) encoder := simplifiedchinese.GBK.NewEncoder() writer = transform.NewWriter(writer, encoder) _, err = writer.WriteString("这是一段中文文本") if err != nil { log.Fatal(err) }
Kod ini menggunakan simplifiedchinese.GBK.NewEncoder() untuk mengekod teks bertulis. Anda boleh memilih format pengekodan lain mengikut keperluan.
Selain menggunakan perpustakaan standard golang untuk menulis fail, anda juga boleh menggunakan perpustakaan pihak ketiga, seperti github.com/axgle /mahonia Menyelesaikan masalah watak bercelaru.
Berikut ialah contoh kod yang menggunakan perpustakaan mahonia untuk menulis teks pada fail:
import ( "github.com/axgle/mahonia" ) file, err := os.Create("test.txt") if err != nil { log.Fatal(err) } defer file.Close() writer := bufio.NewWriter(file) enc := mahonia.NewEncoder("gbk") writer.WriteString(enc.ConvertString("这是一段中文文本")) writer.Flush()
Kod ini menggunakan mahonia.NewEncoder("gbk") untuk mengekod teks bertulis.
Ringkasan
Cara terbaik untuk mengelakkan aksara bercelaru semasa menulis fail dalam golang ialah dengan menentukan format pengekodan yang betul semasa menulis kod. Pengekodan UTF-8 digunakan secara lalai. Jika anda ingin menggunakan format pengekodan lain, anda boleh menggunakan pengekod atau pustaka pihak ketiga untuk berbuat demikian.
Atas ialah kandungan terperinci Golang menulis fail bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!