Mengesan Jujukan Bait Tidak Sah dalam Penukaran Rentetan Go
Jujukan bait tidak sah boleh menghalang penukaran bait kepada rentetan dalam Go. Mengetahui cara untuk mengesan ralat sedemikian adalah penting.
Pengesanan
Untuk menentukan kesahihan jujukan UTF-8, gunakan fungsi utf8.Valid.
String Nature in Go
Bertentangan dengan biasa andaian, rentetan Go boleh mengandungi bait bukan UTF-8. Bait ini boleh dicetak, diindeks, dihantar kepada kaedah WriteString dan malah ditukar kembali kepada []bait.
Pengecualian
Walau bagaimanapun, Go melaksanakan penyahkodan UTF-8 dalam dua senario khusus:
Pengendalian UTF-8 Tidak Sah
Aksara UTF-8 yang tidak sah digantikan dengan aksara gantian U FFFD semasa penukaran. Ini memastikan penghuraian boleh diteruskan tanpa ranap.
Implikasi
Anda hanya perlu menyemak kesahihan UTF-8 secara eksplisit jika permohonan anda memerlukannya, seperti menolak U FFFD penggantian dan menjana ralat pada input tidak sah.
Sampel Kod
package main import "fmt" func main() { invalidBytes := []byte{0xff} invalidString := string(invalidBytes) fmt.Println(invalidString) // Prints a special character fmt.Println(len(invalidString)) // Length is 1, not 3 fmt.Println([]rune(invalidString)) // [�], where � is a replacement character }
Ingat, pengendalian Go terhadap bukan UTF-8 bait adalah telus dalam kebanyakan kes, tetapi kesedaran tentang pengecualian adalah penting untuk pemahaman yang lengkap.
Atas ialah kandungan terperinci Bagaimanakah Go Mengendalikan Urutan Bait Tidak Sah Semasa Penukaran Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!