utf-8 编码的问题

murphydai 2013-03-21 08:24:55
为什么说utf-8是单字节编码,有些字符需要使用2字节或者3字节才能表示,对于多字节应该有字节顺序的问题,为什么utf-8不像utf-16那样有这个问题。
uft-8编码规则:
1字节 0000-007f 0xxxxxxx
2字节 0080-07ff 110xxxxx10xxxxxx
3字节 0800-FFFF 1110xxxx10xxxxxx10xxxxxx
是不是这样理解:每个字节都有特定的位,如1110,110,10,单字节编码也就是这个意思。通过这个可以区分字节顺序,比如3字节1110XXXXX肯定在最前面。
...全文
109 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gomoku 2013-03-22
  • 打赏
  • 举报
回复
引用 楼主 murphydai 的回复:
……通过这个可以区分字节顺序,比如3字节1110XXXXX肯定在最前面
是这样的。 而UTF-16则每两个字节成一个单元。有人把低位放前,有人把高位放前,所以有UTF-16LE和UTF-16BE。 (绝大部分UTF-16字符为两个字节,但不排除有些UTF-16字符会有两个单元,即4个字节)
宝_爸 2013-03-22
  • 打赏
  • 举报
回复
是的,就是通过首几个bit决定是一个字节还是多个字节。 以0开始就是单字节 以110开始就是双字节 以1110开始就是三字节 以10开始就是双字节或者三字节后面的字节。
threenewbee 2013-03-22
  • 打赏
  • 举报
回复
使用不定码长,并且把常用的字符用短码表示可以节约存储空间。但是要区分一个3个字节的数据代表1个3字节的编码呢还是3个1字节的编码呢,还是1个2字节+2个1字节呢?所以约定了前缀。这不是很简单的道理么?

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧