Go语言本身是使用utf8的, 不过在处理字符串的时候仍然需要注意一些事情
问题很简单,直接看例子吧
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
str := "这是一个测试字符串"
fmt.Println(str)
fmt.Println(utf8.RuneCountInString(str))
fmt.Println(utf8.DecodeRuneInString(str))
for i, r := range "Hello,世界" {
fmt.Printf("%d\t%q\t%d\n", i, string(r), r)
}
for i, r := range "Hello,世界" {
fmt.Println( i, r, r)
}
for i, r := range "Hello,世界" {
fmt.Println( i, string(r), r)
}
}
输出
这是一个测试字符串
9
36825 3
0 "H" 72
1 "e" 101
2 "l" 108
3 "l" 108
4 "o" 111
5 "," 44
6 "世" 19990
9 "界" 30028
0 72 72
1 101 101
2 108 108
3 108 108
4 111 111
5 44 44
6 19990 19990
9 30028 30028
0 H 72
1 e 101
2 l 108
3 l 108
4 o 111
5 , 44
6 世 19990
9 界 30028
eclipse的控制台如果输出乱码的话你需要修改run的设置
如果要截取(substring或split)一个中文字符串的某个片段, 例如 第二个汉字到第三个汉字
str := "这是一个测试字符串"
rs := []rune(str)
fmt.Println(string(rs[1:3]))
会得到输出
是一