Von https://en.wikipedia.org/wiki/UTF-8#Invalid_code_points habe ich erfahren, dass U + D800 bis U + DFFF ungültig sind. Also im Dezimalsystem ist es 55296 bis 57343.Warum erkennt die utf8.Validstring-Funktion ungültige Unicode-Zeichen nicht?
Und maximale gültige Unicode ist '\ U0010FFFF'. In Dezimalsystem ist es 1114111
Mein Code:
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")
}
}
Warum ist ValidString Funktion nicht falsch für ungültiges Unicode-Zeichen als Eingabe gegeben Rückkehr? Ich bin sicher, mein Verständnis ist falsch, könnte jemand erklären?