golang对字符串的储存是以UTF-8进行储存的
go语言中len()函数可以获取 数组、数组切片,以及ASCII型字符串(如不含汉字)的长度,而字符串因为在go语言中是以utf-8形式储存。所以:
str1 := "代码"
str2 := "代码使我快乐"
//len
fmt.Println(len(str1)) //length;6
fmt.Println(len(str2)) //length: 18
//utf8
fmt.Println(utf8.RuneCountInString(str1)) //length;2
fmt.Println(utf8.RuneCountInString(str2)) //length: 6
中文汉字在utf-8中到底占几个字节,一般是3个字节,最常见的编码方式是:1110xxxx 10xxxxxx 10xxxxxx
中文汉字:
字节数 : 2;编码:GB2312
字节数 : 2;编码:GBK
字节数 : 2;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 3;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE