Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Go Mengendalikan dan Mengesan Bait Tidak Boleh Tukar dalam Rentetan?
Pengesanan Bait Tidak Boleh Tukar dalam Rentetan Go
Dalam Go, jujukan bait tertentu tidak boleh ditafsirkan sebagai aksara Unikod yang sah. Mengesan urutan tidak sah ini adalah penting untuk pengendalian rentetan yang lancar. Berikut ialah penjelasan terperinci:
Semakan Kesahan UTF-8:
Seperti yang dinyatakan oleh Tim Cooper, utf8.Valid boleh digunakan untuk memastikan kesahihan UTF-8. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa rentetan Go boleh mengandungi aksara bukan UTF-8. Ini kerana rentetan pada asasnya ialah kepingan bait dan bait ini mungkin tidak sentiasa mematuhi pengekodan UTF-8.
Gelagat Penyahkodan:
Go hanya melaksanakan UTF -8 penyahkodan dalam dua keadaan tertentu:
Dalam kedua-dua kes ini, tidak sah Aksara UTF-8 digantikan dengan titik kod Unicode U FFFD, yang berfungsi sebagai pemegang tempat untuk tidak disokong mesin terbang.
Pengecualian kepada Ranap:
Perhatikan bahawa penukaran ini tidak pernah ranap. Oleh itu, menyemak secara eksplisit kesahihan UTF-8 adalah perlu hanya jika permohonan anda memerlukannya, seperti semasa mengendalikan input yang tidak boleh menerima U FFFD sebagai pengganti.
Contoh:
Kod berikut menunjukkan cara Go mengendalikan UTF-8 yang tidak sah bait:
package main import "fmt" func main() { a := []byte{0xff} s := string(a) fmt.Println(s) for _, r := range s { fmt.Println(r) } rs := []rune(s) fmt.Println(rs) }
Output:
� 65533 [65533]
Seperti yang anda lihat, jujukan bait yang tidak sah dipaparkan sebagai � apabila rentetan dicetak secara keseluruhan. Apabila berulang, ia mengembalikan titik kod Unicode untuk U FFFD. Dan apabila ditukar kepada sekeping rune, ia mengembalikan satu rune yang mewakili U FFFD.
Oleh itu, walaupun Go tidak ranap apabila menukar UTF-8 bait yang tidak sah kepada rentetan, adalah penting untuk mengetahui perkara yang khusus. tingkah laku dan mengendalikannya dengan sewajarnya dalam aplikasi anda.
Atas ialah kandungan terperinci Bagaimanakah Go Mengendalikan dan Mengesan Bait Tidak Boleh Tukar dalam Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!