我正在使用该golang.org/x/text/unicode/norm包在[]byte. 我选择了这种方法,因为我需要检查每个符文并维护有关符文序列的信息。最后一次调用iter.Next()不读取最后一个符文。它在最后一个符文上读取 0 个字节。这是代码:package mainimport ( "fmt" "unicode/utf8" "golang.org/x/text/unicode/norm")func main() { var ( n int r rune it norm.Iter out []byte ) in := []byte(`test`) fmt.Printf("%s\n", in) fmt.Println(in) it.Init(norm.NFD, in) for !it.Done() { ruf := it.Next() r, n = utf8.DecodeRune(ruf) fmt.Printf("bytes read: %d. val: %q\n", n, r) buf := make([]byte, utf8.RuneLen(r)) utf8.EncodeRune(buf, r) out = norm.NFC.Append(out, buf...) } fmt.Printf("%s\n", out) fmt.Println(out)}这会产生以下输出:test[116 101 115 116]bytes read: 1. val: 't'bytes read: 1. val: 'e'bytes read: 1. val: 's'bytes read: 0. val: '�'tes�[116 101 115 239 191 189]
1 回答
- 1 回答
- 0 关注
- 233 浏览
添加回答
举报
0/150
提交
取消