猿问

Golang unicode 字符值

我运行此代码并获得输出,但为什么字节值为 E4B8AD 而 int 值为 20013。为什么第 2 列不等于第 5 列?


包主


import(

    "fmt"

)


func main(){


    str2 := "中文"


    fmt.Println("index int(rune) rune char bytes")

    for index, rune := range str2{

        fmt.Printf("%-2d      %d       %U '%c' %X\n", index, rune, rune, rune, []byte(string(rune)))

    }

}

输出是:


index int(rune) rune char bytes

0      20013       U+4E2D '中' E4B8AD

1      25991       U+6587 '文' E69687


郎朗坤
浏览 102回答 1
1回答

POPMUISE

字符的 Unicode 代码点不一定与给定字符编码中该字符的字节表示相同。对于字符中,代码点是U+4E2D,但是各种字符编码中的字节表示是:E4B8AD(UTF-8)4E2D(UTF-16)00004E2D(UTF-32)
随时随地看视频慕课网APP

相关分类

Go
我要回答