mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2025-10-23 23:11:49 +00:00
ch3: fix code path
This commit is contained in:
@@ -115,7 +115,7 @@ for range s {
|
||||
|
||||
正如我們前面提到的,文本字符串采用UTF8編碼隻是一種慣例,但是對於循環的眞正字符串併不是一個慣例,這是正確的。如果用於循環的字符串隻是一個普通的二進製數據,或者是含有錯誤編碼的UTF8數據,將會發送什麽呢?
|
||||
|
||||
每一個UTF8字符解碼,不管是顯式地調用utf8.DecodeRuneInString解碼或是在range循環中隱式地解碼,如果遇到一個錯誤的UTF8編碼輸入,將生成一個特别的Unicode字符'\uFFFD',在印刷中這個符號通常是一個黑色六角或鑽石形狀,里面包含一個白色的問號(?)。當程序遇到這樣的一個字符,通常是一個危險信號,説明輸入併不是一個完美沒有錯誤的UTF8字符串。
|
||||
每一個UTF8字符解碼,不管是顯式地調用utf8.DecodeRuneInString解碼或是在range循環中隱式地解碼,如果遇到一個錯誤的UTF8編碼輸入,將生成一個特别的Unicode字符'\uFFFD',在印刷中這個符號通常是一個黑色六角或鑽石形狀,里面包含一個白色的問號"<22>"。當程序遇到這樣的一個字符,通常是一個危險信號,説明輸入併不是一個完美沒有錯誤的UTF8字符串。
|
||||
|
||||
UTF8字符串作爲交換格式是非常方便的,但是在程序內部采用rune序列可能更方便,因爲rune大小一致,支持數組索引和方便切割。
|
||||
|
||||
@@ -147,10 +147,5 @@ fmt.Println(string(0x4eac)) // "京"
|
||||
如果對應碼點的字符是無效的,則用'\uFFFD'無效字符作爲替換:
|
||||
|
||||
```Go
|
||||
fmt.Println(string(1234567)) // "(?)"
|
||||
fmt.Println(string(1234567)) // "<EFBFBD>"
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user