go 字符串乱码和不可打印

Posted kevin_yang123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"。

 

以上是关于go 字符串乱码和不可打印的主要内容,如果未能解决你的问题,请参考以下文章

python对打印出中文乱码问题的解决方案

STM32串口打印乱码

Android 使用Log打印日志的时候中文是乱码,怎么解决啊?

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

SQL Server - 删除所有不可打印的 ASCII 字符

Go键盘输入和打印输出