Cara Mengendalikan Aksara UTF-8 Tidak Sah dalam Rentetan dalam Go
Apabila menyusun senarai rentetan menggunakan json.Marshal, anda boleh temui mesej ralat "json: tidak sah UTF-8 dalam rentetan." Ini berlaku disebabkan oleh urutan UTF-8 yang tidak sah dalam rentetan.
Penggantian atau Pembuangan Aksara Tidak Sah
Dalam Python, anda mempunyai kaedah untuk mengalih keluar, menggantikan atau menaikkan pengecualian untuk aksara UTF-8 yang tidak sah. Go menyediakan penyelesaian yang serupa:
Menggunakan rentetan.ToValidUTF8 (Go 1.13 )
Fungsi ini mengalih keluar urutan UTF-8 yang tidak sah daripada rentetan dan menggantikannya dengan penggantian Unikod watak (U FFFD).
fixedString := strings.ToValidUTF8("a\xc5z", "")
Pemetaan dan Menggantikan dengan utf8.RuneError (Go 1.11 )
Anda juga boleh memetakan aksara dalam rentetan menggunakan rentetan.Map dan utf8.RuneError. Jika aksara ialah ralat Unikod (tidak sah), ia digantikan dengan nilai sandaran yang ditentukan (cth., -1).
fixUtf := func(r rune) rune { if r == utf8.RuneError { return -1 } return r } var input1 = "a\xc5z" fmt.Println(strings.Map(fixUtf, input1)) // Output: az var input2 = "posic�o" fmt.Println(strings.Map(fixUtf, input2)) // Output: posico
Atas ialah kandungan terperinci Bagaimana Mengendalikan Aksara UTF-8 Tidak Sah dalam Go Strings dengan berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!