为了账号安全,请及时绑定邮箱和手机立即绑定

golang unicode/norm 迭代器的最后一个符文未被读取

golang unicode/norm 迭代器的最后一个符文未被读取

Go
泛舟湖上清波郎朗 2021-10-18 16:54:50
我正在使用该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
提交
取消
意见反馈 帮助中心 APP下载
官方微信