gpt4 book ai didi

Golang unicode 字符值

转载 作者:IT王子 更新时间:2023-10-29 01:34:29 25 4
gpt4 key购买 nike

我运行此代码并获得输出,但为什么字节值为 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

最佳答案

字符的 Unicode 代码点不一定与给定字符编码中该字符的字节表示相同。

对于字符,码位是U+4E2D,但是在各种字符编码中的字节表示是:

  • E4B8AD (UTF-8)
  • 4E2D (UTF-16)
  • 00004E2D (UTF-32)

有一个非常好的答案 here这解释了如何在代码点和字节表示之间进行转换。还有优秀的 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)乔尔·斯波斯基 (Joel Spolsky) 着。

关于Golang unicode 字符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53865423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com