Mengalih keluar Aksara UTF-8 Tidak Sah daripada Strings in Go
Apabila cuba menyusun senarai rentetan menggunakan json.Marshal, adalah mungkin untuk menghadapi ralat yang menunjukkan kehadiran aksara UTF-8 yang tidak sah. Artikel ini menangani isu ini dan menyediakan penyelesaian untuk mengalih keluar atau menggantikan aksara sedemikian dalam Go.
Dalam Python, modul unicode menawarkan kaedah seperti unicode.replace dan unicode.strict untuk mengendalikan aksara tidak sah. Walau bagaimanapun, Go tidak mempunyai persamaan langsung. Sebaliknya, ia bergantung pada pendekatan yang berbeza:
Menggunakan rentetan.ToValidUTF8 dalam Go 1.13
Untuk mengalih keluar aksara UTF-8 yang tidak sah daripada rentetan, anda boleh menggunakan rentetan .Fungsi ToValidUTF8 diperkenalkan dalam Go 1.13. Ia memerlukan dua parameter: rentetan input dan aksara gantian untuk digunakan bagi bait yang tidak sah. Jika aksara gantian ialah rentetan kosong, bait yang tidak sah akan dialih keluar secara senyap:
invalidString := "a\xc5z" validString := strings.ToValidUTF8(invalidString, "") // validString will now be "az"
Menggunakan rentetan.Map dan utf8.RuneError in Go 1.11
Alternatif penyelesaiannya ialah menggunakan strings.Map bersama-sama dengan utf8.RuneError. strings.Map menggunakan fungsi pada setiap rune dalam rentetan, manakala utf8.RuneError mewakili aksara UTF-8 yang tidak sah. Berikut ialah contoh:
invalidString := "a\xc5z" fixUtf := func(r rune) rune { if r == utf8.RuneError { return -1 // Replace invalid characters with -1 } return r } validString := strings.Map(fixUtf, invalidString) fmt.Println(validString) // Output: "az"
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Aksara UTF-8 Tidak Sah daripada Rentetan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!