[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 序列,则第二个值将为0xFFFD
Unicode 替换字符,并且下一次迭代将在字符串中前进一个字节。
- 1 回答
- 0 关注
- 71 浏览
添加回答
举报
0/150
提交
取消