字符长度
len得到字符长度 ,utf8.RuneCountInString字符串长度
var s string
s="Yes问天地之悠悠!"
fmt.Println("len(s)",len(s))
fmt.Println("len(s)",len([]byte(s)))
fmt.Println("len([]rune(s))",len([]rune(s)))
fmt.Println("len(s)",utf8.RuneCountInString(s))
字符转数组与字节
var bytes = []byte(s)
fmt.Println(bytes)
var runes = []rune(s)
fmt.Println(runes)
字符编码
go默认的编码UTF-8,每个字符占3个字节
Golang 内建支持 UTF-8 编码,支持转化到其它编码,例如:GBK编码,可以使用 Go 官方的 [golang.org/x/text] 包进行转换,代码如下:
// transform GBK bytes to UTF-8 bytes
func GbkToUtf8(str []byte) (b []byte, err error) {
r := transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewDecoder())
b, err = ioutil.ReadAll(r)
if err != nil {
return
}
return
}
// transform UTF-8 bytes to GBK bytes
func Utf8ToGbk(str []byte) (b []byte, err error) {
r := transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewEncoder())
b, err = ioutil.ReadAll(r)
if err != nil {
return
}
return
}
rune
即 Unicode code points ;可以简单理解为Unicode 用来表示每一个字符的 key,例如:汉字的“字”的十进制使用23383表示,这就是一个编码点。
网友评论