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文字のためにfalseを返すされていないのはなぜ?私の理解が間違っていると確信しています。