?[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 關注
- 109 瀏覽
添加回答
舉報
0/150
提交
取消