带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(10)

简介: 带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(10)

带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(9) https://developer.aliyun.com/article/1240878?groupCode=tech_library


10.5.3容错性


通过上面的程序我们知道:解析过程是一个字节一个字节往下处理的,我们在传输过程中如果发生局部的字节错误、丢失,或者中间有一个字节规则对不上,会不会影响整个文本的解析?


我们先来看下其他编码的容错情况:从对于单字节的ASCII码来说,丢失一个字节就丢失一个字符,并不影响后续文本的内容,比如Hello world,丢失b2字节后内容是Hllo world少个e而已。


我们再来看GB2312这种多字节编码:如果丢失了b2字节那么整个文本都乱套了,这是最糟糕的,大部分多字节编码都有类似问题,一旦出现错误可能导致整个文件都需要重传。



接下来我们看看UTF-8是如何避免这种“一颗老鼠屎坏了一锅粥”的情况:UTF-8 的码元序列的第一个字节指明了后面所跟字节的个数,比如首字节高位是0就表示单字节,110表示总共两个字节,1110表示三个字节依次类推,除首字节之外后续字节都是10开头。所以UTF-8的前缀码具有很强的鲁棒性,即使丢失、增加、改变个别字节也不会导致后续字符全部错乱这样的传递性、连锁性的错误问题。


相关文章
|
6月前
|
存储 JavaScript Java
[字符编码] 理论篇:常见字符集与编码方式
[字符编码] 理论篇:常见字符集与编码方式
169 0
|
存储
带你读《全景揭秘字符编码》之二:二、什么是字符编码?
带你读《全景揭秘字符编码》之二:二、什么是字符编码?
248 1
|
自然语言处理
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(6)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(6)
161 0
|
存储 编解码
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(1)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(1)
189 0
|
自然语言处理
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(2)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(2)
149 0
|
存储
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(5)
150 0
|
编解码 算法 Unix
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(9)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(9)
134 0
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(4)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(4)
181 0
|
存储
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(8)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(8)
176 0
|
Unix Linux Windows
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(7)
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(7)
156 0