Golang

来源:互联网 发布:淘宝投诉人工客服 编辑:程序博客网 时间:2024/05/16 13:59
------------------------------------------------------------// IsSurrogate 判断 r 是否为代理区字符// 两个代理区字符可以用来组合成一个 utf16 编码func IsSurrogate(r rune) bool
// EncodeRune 将字符 r 编码成 UTF-16 代理对// r:要编码的字符// 如果 r < 0x10000 ,则无需编码,其 UTF-16 序列就是其自身// r1:编码后的 UTF-16 代理对的高位码元// r2:编码后的 UTF-16 代理对的低位码元// 如果 r 不是有效的 Unicode 字符,或者是代理区字符,或者无需编码// 则返回 U+FFFD, U+FFFDfunc EncodeRune(r rune) (r1, r2 rune)
// DecodeRune 将 UTF-16 代理对解码成一个 Unicode 字符// r1:是 UTF-16 代理对的高位码元// r2:是 UTF-16 代理对的低位码元// 返回值为解码后的 Unicode 字符// 如果 r1 或 r2 不是有效的 UTF-16 代理区字符,则返回 U+FFFDfunc DecodeRune(r1, r2 rune) rune
// Decode 将 UTF-16 序列 s 解码成 Unicode 字符序列并返回func Decode(s []uint16) []rune
// Encode 将 s 编码成 UTF-16 序列并返回func Encode(s []rune) []uint16
------------------------------
// 示例func main() {fmt.Printf("%t, ", utf16.IsSurrogate(0xD400)) // falsefmt.Printf("%t, ", utf16.IsSurrogate(0xDC00)) // truefmt.Printf("%t\n", utf16.IsSurrogate(0xDFFF)) // true
r1, r2 := utf16.EncodeRune('