unc EncodeRune(p []byte, r rune) int
- 将 r 转换为 UTF-8 编码写入 p 中(p 必须足够长,通常为 4 个字节)
- 如果 r 是无效的 Unicode 字符,则写入 RuneError
返回写入的字节数
r := '蒋'
buf := make([]byte, 3)
n := utf8.EncodeRune(buf, r)
fmt.Println(buf)
fmt.Println(n)
解码 p 中的第一个字符,返回解码后的字符和 p 中被解码的字节数
- 如果 p 为空,则返回(RuneError, 0)
- 如果 p 中的编码无效,则返回(RuneError, 1)
func DecodeRuneInString(s string) (r rune, size int)
- 函数类似DecodeRune但输入参数是字符串。
func DecodeLastRune(p []byte) (r rune, size int)
- 函数解码p中最后一个utf-8编码序列,返回该码值和编码序列的长度。
func DecodeLastRuneInString(s string) (r rune, size int)
- 函数类似DecodeLastRune但输入参数是字符串。
FullRune 检测 p 中第一个字符的 UTF-8 编码是否完整(完整并不表示有效)。
buf := []byte{228, 184, 150} // 世
fmt.Println(utf8.FullRune(buf)) //true
fmt.Println(utf8.FullRune(buf[:2])) //false
函数类似FullRune但输入参数是字符串。
返回p中的utf-8编码的码值的个数
buf := []byte("Hello,世界")
fmt.Println("bytes =", len(buf))//12
fmt.Println("runes =", utf8.RuneCount(buf))//8
函数类似RuneCount但输入参数是一个字符串
返回切片p是否包含完整且合法的utf-8编码序列。
valid := []byte("Hello, 世界")
invalid := []byte{0xff, 0xfe, 0xfd}
fmt.Println(utf8.Valid(valid))//true
fmt.Println(utf8.Valid(invalid))//false
报告s是否包含完整且合法的utf-8编码序列。
valid := "Hello, 世界"
invalid := string([]byte{0xff, 0xfe, 0xfd})
fmt.Println(utf8.ValidString(valid))
fmt.Println(utf8.ValidString(invalid))