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"。