protobuf 填充汉字的编码问题

pivdets · · 3656 次点击
http://tool.chinaz.com/Tools/utf-8.aspx 我用这个工具转换是 ``` 南京到成都7月22日 ``` 貌似我们后台需要 utf-8 编码,不知道怎样才能在go中用utf8填充protobuf呢?
#2
更多评论
``` func main() { str := "\345\215\227\344\272\254\345\210\260\346\210\220\351\203\2757\346\234\21022\346\227\245" fmt.Println(str) } ``` 输出: 南京到成都7月22日 成功: 进程退出代码 0.
#1
go里面默认都是用utf8处理字符串的: https://golang.google.cn/ref/spec#String_literals `The three-digit octal (\nnn) and two-digit hexadecimal (\xnn) escapes represent individual bytes of the resulting string; all other escapes represent the (possibly multi-byte) UTF-8 encoding of individual characters. Thus inside a string literal \377 and \xFF represent a single byte of value 0xFF=255, while ÿ, \u00FF, \U000000FF and \xc3\xbf represent the two bytes 0xc3 0xbf of the UTF-8 encoding of character U+00FF.` package main import ( "fmt" ) func main() { str := "你好a" fmt.Printf("%x\n", []byte(str)) fmt.Println("\xe4\xbd\xa0\xe5\xa5\xbd\x61") //用十六进制表示utf8编码的每个字节 fmt.Printf("%o\n", []byte(str)) fmt.Println("\344\275\240\345\245\275\141") //用八进制表示utf8编码的每个字节 for _, r := range str { fmt.Printf("%x,", r) } fmt.Println("") fmt.Println("\u4f60\u597d\u0061") //用每个字符的unicode值表示这个字符串 }
#3