Golang与UTF-8

Golang与UTF-8

我们在浏览器抓包的时候,有时候会发现类似这样的一串字符串:

\350\241\250\346\203\205

当然我们都知道这多半是UTF-8表示的汉字。那么在Go语言当中,我们要怎么转换他们呢?

这里直接贴一下代码,以作记录。

注意:这里的数字其实是8进制表示的!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import "fmt"

func main() {
// 将这样的8进制表示的UTF-8字符串恢复成可读状态
str := "\350\241\250\346\203\205"
fmt.Printf("%s\n", str) // out:表情

// 使用range遍历“表情”,会发现一个汉字就对应一个编码
str2 := "表情"
for _, c := range str2 {
fmt.Printf("%o ", c) // 104150 60305
}
fmt.Println()

// 使用fori遍历“表情”,每个汉字对应3个数字,正好和上面的一串字符吻合
for i := 0; i < len(str2); i++ {
fmt.Printf("%o ", str2[i])
}
fmt.Println() // 350 241 250 346 203 205
}