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,按照字符去操作