Rumah >pembangunan bahagian belakang >Golang >Bagaimana Mengendalikan Aksara UTF-8 Tidak Sah dalam Go Strings dengan berkesan?

Bagaimana Mengendalikan Aksara UTF-8 Tidak Sah dalam Go Strings dengan berkesan?

DDD
DDDasal
2024-12-07 06:44:14655semak imbas

How to Effectively Handle Invalid UTF-8 Characters in Go Strings?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn