Golang学习(15)——Unicode utf16包

1160636144 · · 1700 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Golang学习聽-聽unicode/utf16聽包

----------------------------

// 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+FFFD

func聽EncodeRune(r rune) (r1, r2 rune)

// DecodeRune 将 UTF-16 代理对解码成一个 Unicode 字符

// r1:是 UTF-16 代理对的高位码元

// r2:是 UTF-16 代理对的低位码元

// 返回值为解码后的 Unicode 字符

// 如果 r1 或 r2 不是有效的 UTF-16 代理区字符,则返回 U+FFFD

func聽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)) // false

聽聽聽聽fmt.Printf("%t, ", utf16.IsSurrogate(0xDC00)) // true

聽聽聽聽fmt.Printf("%t\n", utf16.IsSurrogate(0xDFFF)) // true

聽聽聽聽r1, r2 := utf16.EncodeRune('>')聽

聽聽聽聽fmt.Printf("%x, %x\n", r1, r2) // d840, dc3e

聽聽聽聽r := utf16.DecodeRune(0xD840, 0xDC3E)聽

聽聽聽聽fmt.Printf("%c\n", r) // d840, dc3e

聽聽聽聽u := []uint16{'不', '会', 0xD840, 0xDC3E}聽

聽聽聽聽s := utf16.Decode(u)聽

聽聽聽聽fmt.Printf("%c", s) // [不 会 >]

}



有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:1160636144

查看原文:Golang学习(15)——Unicode utf16包

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1700 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传