Apabila menulis program menggunakan golang, kadangkala kita menghadapi masalah aksara bercelaru apabila mengeluarkan aksara Cina. Ini kerana golang menggunakan pengekodan UTF-8 secara lalai, tetapi pengekodan lalai bagi sesetengah sistem pengendalian atau alatan terminal bukan UTF-8, menyebabkan aksara Cina tidak dipaparkan secara normal.
Terdapat banyak sebab untuk situasi ini di bawah kami akan menerangkan beberapa daripadanya secara terperinci dan memberikan penyelesaian yang sepadan.
1. Isu pengekodan dengan alatan terminal
Dalam gesaan arahan CMD sistem pengendalian Windows, pengekodan lalai ialah GBK dan aksara Cina yang dikodkan UTF-8 tidak boleh dipaparkan seperti biasa. Pada ketika ini kita boleh menyelesaikannya dalam dua cara berikut.
Ubah suai kaedah pengekodan CMD kepada UTF-8, yang boleh dicapai dengan menggunakan arahan chcp 65001 (memerlukan sokongan untuk Windows Vista dan ke atas). Selepas memasukkan arahan ini dalam CMD, anda boleh menukar kaedah pengekodan kepada UTF-8.
Dalam program golang, anda boleh menggunakan beberapa fungsi perpustakaan untuk menukar rentetan bahasa Cina daripada pengekodan UTF-8 kepada pengekodan lain. Sebagai contoh, anda boleh menggunakan GB18030 dalam pakej "golang.org/x/text/encoding/simplifiedchinese" untuk menukar rentetan kepada pengekodan GBK.
2. Isu pengekodan fail
Apabila kita menggunakan golang untuk membaca fail atau fail output, jika kaedah pengekodan fail tidak konsisten dengan kaedah pengekodan yang digunakan oleh program, aksara Cina juga akan jadi kacau.
Apabila membaca fail dalam golang, kita perlu menentukan kaedah pengekodan fail. Ini boleh dicapai menggunakan beberapa fungsi dalam pakej "golang.org/x/text/encoding". Contohnya, gunakan fungsi "bufio.NewReader(os.Stdin).ReadString('n')" untuk membaca baris rentetan berkod UTF-8. Jika fail dikodkan secara berbeza daripada UTF-8, anda boleh menentukan pengekodan yang berbeza dengan mengubah suai fungsi ReadString dengan sewajarnya.
Apabila menulis data pada fail, anda juga perlu menentukan kaedah pengekodan fail. Ini boleh dicapai dengan menggunakan beberapa fungsi dalam pakej "golang.org/x/text/encoding". Contohnya, gunakan fungsi "bufio.NewWriter(buf).WriteString(str)" untuk menulis rentetan yang dikodkan UTF-8 ke dalam Buffer. Jika anda perlu menulis data ke fail dengan kaedah pengekodan lain, anda boleh menentukan kaedah pengekodan lain dengan mengubah suai fungsi WriteString dengan sewajarnya.
3. Isu pengekodan web
Apabila menulis aplikasi web, jika kami menggunakan aksara Cina sebagai input atau output, kami mungkin juga menghadapi masalah kod yang bercelaru.
Dalam aplikasi web golang, anda boleh menyelesaikan masalah aksara Cina yang bercelaru dengan menyatakan set aksara dalam pengepala http. Set aksara dalam pengepala http boleh ditetapkan menggunakan fungsi dalam pakej "net/http". Sebagai contoh, anda boleh menggunakan fungsi "w.Header().Set("Content-Type", "text/html;charset=utf-8")" untuk menetapkan set aksara dalam pengepala http kepada UTF-8.
Dalam aplikasi web, kita mungkin perlu menukar rentetan yang diperoleh daripada pangkalan data atau sumber lain kepada rentetan yang dikodkan UTF-8 , dan kemudian mengeluarkannya ke pelayar. Anda boleh menggunakan GB18030 dalam pakej "golang.org/x/text/encoding/simplifiedchinese" untuk menukar rentetan daripada pengekodan GBK kepada pengekodan UTF-8. Sebagai contoh, anda boleh menggunakan fungsi "gbkBytes, _ := simplifiedchinese.GB18030.NewDecoder().Bytes(strBytes)" untuk menukar rentetan berkod GBK kepada rentetan berkod UTF-8.
Ringkasan
Apabila menggunakan golang untuk menulis program, adalah perkara biasa untuk menghadapi masalah aksara Cina yang bercelaru. Kita boleh menerima pakai penyelesaian yang berbeza mengikut situasi yang berbeza. Untuk mengelakkan masalah aksara Cina yang bercelaru, cara terbaik ialah mengekod semua data dalam UTF-8. Ini bukan sahaja mengelakkan masalah pengekodan, tetapi juga menjadikan program kami lebih mudah alih dan boleh dikongsi.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan aksara golang teks bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!