我正在研究处理UTF-8
编码的东西,我发现自己在问这个问题:
- 当我遇到一个从未在
UTF-8
编码字符串中出现的字节时,我该怎么办?
IE0x1111111X
例如,我正在编写一小段代码,它查看字节流中的当前位置,并告诉您使用多少字节来表示流中该位置的代码点。
0x0XXXXXXX
只有 10x10XXXXXX
哎呀,我们在一个连续字节中,向后搜索以找到前导字节0x11XXXXXX
计算前导 1 的数量,这就是答案0x1111111X
错误,这是不可能的UTF-8
!该怎么办!?!?
我正在考虑返回一个错误值,但想知道是否应该将其替换为一些更可预测的错误字形(我的意思是表示所述字形的代码点)。后来当我做一些更复杂的事情时,比如跳过字符串并发现前导字节后面没有正确数量的连续字节......我想我也应该“修复”它。
将错误编码的字符串破坏,或者更改它们并使其错误但至少玩得好,这是标准做法吗?