免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 11388 | 回复: 24
打印 上一主题 下一主题

为什么utf-8没有字节序问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-23 17:23 |只看该作者 |倒序浏览
说utf-16有字节序问题很容易理解,但是凭什么说utf-8没有字节序问题?比如中文在utf-8编码时,采用3个字节,这3个字节传输的时候,怎么说没有字节序问题呢?只是utf-8三个字节中,有个字节比较特殊,除非默认约定从这个字节传输,否则肯定也有字节序问题。

但是查了N多网页,大家都很坦然的说“UTF-8以字节为编码单元,没有字节序的问题。”,当凭它是字节为编码单元,就没有字节序问题了?这话说的也太厚脸皮了吧。

论坛徽章:
24
狮子座
日期:2013-12-31 10:48:0015-16赛季CBA联赛之吉林
日期:2016-04-18 14:43:1015-16赛季CBA联赛之北控
日期:2016-05-18 15:01:4415-16赛季CBA联赛之上海
日期:2016-06-22 18:00:1315-16赛季CBA联赛之八一
日期:2016-06-25 11:02:2215-16赛季CBA联赛之佛山
日期:2016-08-17 22:48:2615-16赛季CBA联赛之福建
日期:2016-12-27 22:39:272016科比退役纪念章
日期:2017-02-08 23:49:4315-16赛季CBA联赛之八一
日期:2017-02-16 01:05:3415-16赛季CBA联赛之山东
日期:2017-02-22 15:34:5615-16赛季CBA联赛之上海
日期:2017-11-25 16:17:5015-16赛季CBA联赛之四川
日期:2016-01-17 18:38:37
2 [报告]
发表于 2010-03-23 17:30 |只看该作者
回复 1# orclover

这个真没有。{:3_189:}

这就像是 char [] 没有字节序一样。

论坛徽章:
0
3 [报告]
发表于 2010-03-23 17:31 |只看该作者
能说的明白点吗,对编码目前处在很懵懂的阶段。。。

论坛徽章:
0
4 [报告]
发表于 2010-03-23 17:34 |只看该作者
如果按照char []没有字节序问题的原理理解,那么就是说它默认按照一定的顺序,从那个比较特殊的字节(也就是包含长度的字节)开始读了。那这样就说通了。

但是“UTF-8以字节为编码单元,没有字节序的问题。”这样的说法,我感觉还是太厚颜了,网上铺天盖地都是这个讲法。

论坛徽章:
0
5 [报告]
发表于 2010-03-23 17:38 |只看该作者
在网上还看到一种说法“在 UTF-8 中总是可以知道所处的位置,就是说给定一个字节,马上就能确定它是一个单字节字符、双字节字符的第一个字节、双字节字符的第二个字节,或者三字节/四字节字符的第二个、第三个或第四个字节”,这个是如何做到的?

比如三字节编码一般格式如下:
U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx

第二个和第三个字节的格式一样,任意取出一个,怎么知道哪个是第二个,哪个是第三个?

论坛徽章:
0
6 [报告]
发表于 2010-03-23 17:41 |只看该作者
你见过有人提过 GBK 的字节序问题么?

论坛徽章:
0
7 [报告]
发表于 2010-03-23 17:43 |只看该作者
你见过有人提过 GBK 的字节序问题么?
pagx 发表于 2010-03-23 17:41



    没见过,只见过有人提gbk“半个汉字”的问题,因为gbk没有长度信息,可以任意组合。

论坛徽章:
0
8 [报告]
发表于 2010-03-23 17:46 |只看该作者
刚又查了一下,应该是这个原因吧,引用如下。

“对于任何字符编码,编码单元的顺序是由编码方案指定的,与endian无关。例如GBK的编码单元是字节,用两个字节表示一个汉字。这两个字节的顺序是固定的,不受CPU字节序的影响。UTF-16的编码单元是word(双字节),word之间的顺序是编码方案指定的,word内部的字节排列才会受到endian的影响。”

论坛徽章:
0
9 [报告]
发表于 2010-03-23 17:49 |只看该作者
所以utf-8也没有字节序的问题。字节序问题之存在于需要使用两个字节以上来表示整数。而UTF-8只是一串字节流,不存在字节序问题,不过将这些字节流翻译成Unicode比其他的传输方式复杂。

论坛徽章:
0
10 [报告]
发表于 2010-03-23 17:49 |只看该作者
但是有一点还是不太明白,所谓的编码单元是字节还是word,有什么区别,有人能举个例子吗?比如GBK和UTF-16都有两个字节表示一个汉字,但是二者编码单元不同,如何理解?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP