DecodeLastRuneInString(s string) (r rune, size int)
解码 string s 中最后一个 UTF-8 编码序列,返回该码值和长度。
utf8.DecodeLastRuneInString("小韩说课")
// 返回 35838 3
// 35838 就是课的 unicode 码值
DecodeRune(p []byte) (r rune, size int)
解码 []byte p 中第一个 UTF-8 编码序列,返回该码值和长度。
utf8.DecodeRune([]byte("小韩说课"))
// 返回 23567 3
// 23567 就是 小 的 unicode 码值
DecodeRuneInString(s string) (r rune, size int)
解码 string s 中第一个 UTF-8 编码序列,返回该码值和长度。
utf8.DecodeRuneInString("小韩说课")
// 返回 23567 3
// 23567 就是 小 的 unicode 码值
EncodeRune(p []byte, r rune) int
将 rune r 的 UTF-8 编码序列写入 []byte p,并返回写入的字节数。p 满足足够的长度。
buf := make([]byte, 3)
n := utf8.EncodeRune(buf, '康')
fmt.Println(buf, n)
// 输出 [229 186 183] 3
FullRune(p []byte) bool
检测 []byte p 是否包含一个完整 UTF-8 编码。
buf := []byte{229, 186, 183} // 康
utf8.FullRune(buf)
// 返回 true
utf8.FullRune(buf[:2])
// 返回 false
FullRuneInString(s string) bool
检测 string s 是否包含一个完整 UTF-8 编码。
buf := "康" // 康
utf8.FullRuneInString(buf)
// 返回 true
utf8.FullRuneInString(buf[:2])
// 返回 false
RuneCount(p []byte) int
返回 []byte p 中的 UTF-8 编码的码值的个数。
buf := []byte("小韩说课")
len(buf)
// 返回 12
utf8.RuneCount(buf)
// 返回 4
RuneCountInString(s string) (n int)
返回 string s 中的 UTF-8 编码的码值的个数。
buf := "小韩说课"
len(buf)
// 返回 12
utf8.RuneCountInString(buf)
// 返回 4
RuneLen(r rune) int
返回 rune r 编码后的字节数。
utf8.RuneLen('康')
// 返回 3
utf8.RuneLen('H')
// 返回 1
RuneStart(b byte) bool
检测字节 byte b 是否可以作为某个 rune 编码的第一个字节。
buf := "小韩说课"
utf8.RuneStart(buf[0])
// 返回 true
utf8.RuneStart(buf[1])
// 返回 false
utf8.RuneStart(buf[3])
// 返回 true
Valid(p []byte) bool
检测切片 []byte p 是否包含完整且合法的 UTF-8 编码序列。
valid := []byte("小韩说课")
invalid := []byte{0xff, 0xfe, 0xfd}
utf8.Valid(valid)
// 返回 true
utf8.Valid(invalid)
// 返回 false









