從https://en.wikipedia.org/wiki/UTF-8#Invalid_code_points,我知道U + D800通過U + DFFF是無效的。所以在十進制系統中,它是55296到57343.爲什麼utf8.Validstring函數沒有檢測到無效的unicode字符?
最大有效Unicode是'\ U0010FFFF'。在十進位制,它是1114111
我的代碼:
package main
import "fmt"
import "unicode/utf8"
func main() {
fmt.Println("Case 1(Invalid Range)")
str := fmt.Sprintf("%c", rune(55296+1))
if !utf8.ValidString(str) {
fmt.Print(str, " is not a valid Unicode")
} else {
fmt.Println(str, " is valid unicode character")
}
fmt.Println("Case 2(More than maximum valid range)")
str = fmt.Sprintf("%c", rune(1114111+1))
if !utf8.ValidString(str) {
fmt.Print(str, " is not a valid Unicode")
} else {
fmt.Println(str, " is valid unicode character")
}
}
爲什麼ValidString功能沒有返回給定輸入無效Unicode字符假的?我相信我的理解是錯誤的,有人可以解釋嗎?