A、中与标为 U+1F642 的原生矢量笑脸对应八个字节格,分为一、三、四字节。两条读取分块线切过多字节序列,需要保留未完成字节。

字节边界与解码规则一致,UTF-8 才能完整保留文本

UTF-8 用一到四字节编码 Unicode 标量值。ASCII 字符保持熟悉的单字节表示,许多其他字符则需要更长序列。它适合文本交换,却不会让任意字节自动成为有效文本,也不会让每个字节偏移都成为字符边界。正确处理需要编码约定、符合契约的有效性检查,以及对原始字节和已经解码文本的明确区分。 一次读取可能切开字符。保留未完成字节,严格结束校验,并明确计数单位。 坏掉的样子 文件或网络读取可以停在多字节序列中间。每块独立解码,会拒绝原本完整且有效的整个字节流;如果每块都立即替换错误,还可能破坏本应与下一块组成字符的字节。流式解码器需要保留未完成输入,等后续数据到来再处理,并在流结束时检查是否仍有残缺序列。分块边界是传输细节,不是文本天然边界。 UTF-8 的起始与续字节具有可识别模式,但这不使任意切片安全。直接截断编码后的字节串,可能把一个序列切成两半。使用另一种编码成功解码,也不能证明解释正确。Latin-1 能映射每个字节,因此把 UTF-8 误解为 Latin-1,仍会得到合法 Unicode 字符串,却可能已经成为乱码。有效字符串和正确文本不是同一结论。 ...

十二月 2, 2026 · 1 分钟 · XB Field Notes