在linux的messages日志里面 有一些中文日志,查看的时候是一堆\数字 如下图![2017-08-11 16-40-16屏幕截图.png](http://studygolang.qiniudn.com/170811/aa7d3913d0526a9f40940513ffa0b1a1.png)
用linux命令printf ‘%b\n’ 可以直接转换成中文,但是在golang中不知道怎么实现。望大神们指点一二
写在文件里面的如果是 \346\200\241 这样的字符串显示,那实际的字符串是"\\346\\200\\241", 这个字符串不是"怡",按照UTF-8来讲,前者是12个字符,后者是1个字符,他们在文件里面的二进制表示前者是12个字节,后者是3个字节,这3个字节的八进制表示就是 \346\200\241。 需要将文件里面的 \346\200\241 这样的字符串表示还原为他们实际想表达的二进制:
#7
更多评论
UTF-8的八进制表示,go天生就支持的,直接fmt.Printf("%s")
package main
import (
"fmt"
)
func main() {
s := "\346\200\241\347\276\244"
fmt.Printf("%s, %x, %o\n", s, s, []byte(s))
for i, r := range s {
fmt.Printf("start index:%v, rune:%#U\n", i, r)
}
}
https://golang.org/ref/spec#Rune_literals
#1
怡群, e680a1e7bea4, [346 200 241 347 276 244]
start index:0, rune:U+6021 '怡'
start index:3, rune:U+7FA4 '群'
#2