84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
package main import ( "fmt" ) func main() { str := "我爱你" fmt.Println(str) // 可以直接显示 fmt.Println(str[0:2]) // 显示乱码?? }
想问一下,这种直接截取字符串的方法,为什么会导致乱码?
光阴似箭催人老,日月如移越少年。
不懂go,但八成是编码问题
一个中文字是用多个字节表示,UTF8用3个字节,Unicode用2个字节,GBK用2个字节。
但go可能并不知道,还将它当成单字节字符来看。因此你会截出一个半字。这半个字就表现为乱码。
解决方案: 可一律转成unicode编码,或使用库中可操纵多字节字符的函数
转成rune,按照字符去操作
不懂go,但八成是编码问题
一个中文字是用多个字节表示,UTF8用3个字节,Unicode用2个字节,GBK用2个字节。
但go可能并不知道,还将它当成单字节字符来看。因此你会截出一个半字。这半个字就表现为乱码。
解决方案: 可一律转成unicode编码,或使用库中可操纵多字节字符的函数
转成rune,按照字符去操作