go 字符串乱码和不可打印

func main() {
  s := "中国"
  fmt.Println(s[:5])

  b := []byte{129, 130, 131}  //如果 string 中出现不合法的 utf8 编码,打印时对于每个不合法的编码字节都会输出一个特定的符号
  fmt.Println(string(b))
}

结果
中��
���
乱码的原因:
因为“国”编码有 3 个字节,s[:5]只取了前两个,这两个字节无法组成一个合法的 UTF8 字符,故输出两个�。

另外需要警惕不可打印字符

map 查找:m[string(b)];
字符串拼接:"<" + string(b) + ">";
字符串比较:string(b) == "foo"。

 

posted on 2021-05-30 12:49  kevin_yang123  阅读(506)  评论(0编辑  收藏  举报