【发布时间】:2021-04-16 07:14:04
【问题描述】:
我有点迷茫
// default charset utf8
val bytes = byteArrayOf(78, 23, 41, 51, -32, 42)
val str = String(bytes)
// there i got array [78, 23, 41, 51, -17, -65, -67, 42]
val weird = str.toByteArray()
出于某种原因,我将随机值放入字节属性中。为什么不一致???
【问题讨论】:
-
[-17, -65, -67]数组(十六进制0xEF,0xBF,0xBD)是字节顺序标记 (UTF-8)(在 latin1 中显示为�)。 -
@JosefZ 不,那是
0xEF,0xBB,0xBF。 -
我的错。实际上,
[-17, -65, -67]字节数组(十六进制0xEF,0xBF,0xBD)在 latin1 中显示为�是 �U+FFFD替换字符。谢谢@AlexeyRomanov:字节顺序标记不同:U+FEFF(hexa0xEF,0xBB,0xBF, latin1) 零宽度无间断空间。