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

为什么 utf-8 编码字节 \xbd 在 for range 循环中被格式化为 unicode

为什么 utf-8 编码字节 \xbd 在 for range 循环中被格式化为 unicode

Go
SMILET 2023-08-07 14:32:55
 [Exercise: Put an invalid UTF-8 byte sequence into the string. (How?) What happens to the iterations of the loop?]我所做的是    const nihongo = "\xbd日本語\xbd"    for index, runeValue := range nihongo {        fmt.Printf("%x, %d\n", runeValue, index)    }输出是fffd, 065e5, 1672c, 48a9e, 7fffd, 10我的问题是。utf-8编码的字节如何bd格式化为单位代码点u+fffd?
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

此行为由Spec: For 语句指定:

对于带有范围子句的语句

对于字符串值,“range”子句从字节索引 0 开始迭代字符串中的 Unicode 代码点。在连续迭代中,索引值将是连续 UTF-8 编码代码点的第一个字节的索引字符串和类型为 的第二个值rune将是相应代码点的值。如果迭代遇到无效的 UTF-8 序列,则第二个值将为0xFFFDUnicode 替换字符,并且下一次迭代将在字符串中前进一个字节。


查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信