string转byte类型 字符串转byte数组( 三 )


问题也就出现在这个容错的unicodeuFFFD上,因为字节切片不符合utf8编码规范无法得到正确的unicode,既uFFFD占据了本应该是正确的unicode所在的位置 。这个时候再将已经含有容错字符的rune切片转为字符串时,字符串存储的就是合法的utf8字节切片了,因此第六行输出的是含有uFFFD的合法utf8字节切片,也就产生了和最初始的字节切片不一致的情况了 。
??:在平时的开发中要注意rune切片和byte切片的相互转换一定要基于没有乱码的字符串(内部是符合utf8编码规则的字节切片),否则容易出现上述类似的错误 。
字符串的多种表示方式本节算是扩展了,在开发中还是尽量别用这种特殊的表示方式,虽然看起来很高级但是可读性太差 。
下面直接看代码:
bs := []byte([]byte("新"))for i := 0; i < len(bs); i++ {fmt.Printf("0x%x ", bs[i])}fmt.Println()fmt.Println("xe6x96xb0")fmt.Println("xe6x96xb0世界杂货铺" == "新世界杂货铺")fmt.Println('u65b0' == '新')fmt.Println("u65b0世界杂货铺" == "新世界杂货铺")// 输出:// 0xe6 0x96 0xb0// 新// true// true// true复制代码目前笔者仅发现unicode和单字节的16进制可以直接用在字符串中, 欢迎读者提供更多的表示方式以供交流 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: