UTF-8和UTF-16有什么区别?

2中Java语言编码,有什么具体的区别?说详细点... 2中Java语言编码,有什么具体的区别?说详细点 展开
 我来答
床前明月儿
高能答主

2019-10-06 · 探索生活中的另一种可能
床前明月儿
采纳数:101 获赞数:171935

向TA提问 私信TA
展开全部

一、指代不同

1、UTF-8:把Unicode字符集的抽象码位映射为8位长的整数(即码元)的序列,用于数据存储或传递。

2、UTF-16:把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。

二、编码规则不同

1、UTF-8:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。

2、UTF-16:大尾序和小尾序储存形式都在用。以Macintosh制作或储存的文字使用大尾序格式,以Microsoft或Linux制作或储存的文字使用小尾序格式。


三、优缺点不同

1、UTF-8:可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。

2、UTF-16:大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法兼容于ASCII编码。

参考资料来源:百度百科-UTF-16

参考资料来源:百度百科-UTF-8

大宝妈谈教育
高粉答主

2020-04-04 · 关注我不会让你失望
知道小有建树答主
回答量:3306
采纳率:100%
帮助的人:50.5万
展开全部

一丶 不同的含义

1. Utf-8:将Unicode字符集的抽象代码位映射为8位长整数(即代码位)进行数据存储或传输的序列。

2. Utf-16: Unicode字符集的抽象代码位被映射到一个16位长整数序列(即代码位),用于数据存储或传输。

二丶不同的编码规则

1. Utf-8:如果只有一个字节,则最高的二进制位为0;如果是多字节,第一个字节从最高位开始,值为1的连续二进制位的数量决定了编码的字节数,其余的字节都从10开始。

2. Utf-16:正在使用大尾序列和小尾序列的存储。在Macintosh中生成或存储的文本采用大端格式,而在Microsoft或Linux中生成或存储的文本采用小端格式。


三丶优点和缺点是不同的

1. Utf-8:可以通过掩蔽位和移位操作快速读写。在比较字符串时,STRCMP()和WCSCMP()返回相同的结果,从而简化了排序。

2. Utf-16:大多数字符以固定长度的字节(2字节)存储,但Utf-16与ASCII编码不兼容。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
话不到5677
推荐于2018-05-14 · TA获得超过167个赞
知道答主
回答量:131
采纳率:33%
帮助的人:107万
展开全部
UTF是 Unicode Translation Format,即把Unicode转做某种格式的意思。 在Unicode基本多文种平面定义的字符(无论是拉丁字母、汉字或其他文字或符号),一律使用2字节储存。而在辅助平面定义的字符,会以代理对(surrogate pair)的形式,以两个2字节的值来储存。 unicode是一种编码方式,和ascii是同一个概念,而UTF是一种存储方式(格式)。 在jvm内部,虚拟机管理数据(内存里)时,或者在进行对象序列化的时候,字符(串)都是以unicode编码方式的。 但是在jvm中,字符(串)是以char 这种(存储)形式存放的,一个char占2个字节(例如可以定义char c='字'),就是“字”和“Z”是同样占2个字节的;而在对象序列化后,对象是进行UTF-8存储的,一个中文占2个字节,而英文、数字等只占一个字节,可以参看下面的链接。 所以导致系列化以后的对象只占平时的大约一半的空间(当全是中文时占用相同的空间;全是英文时unicode占用的空间是UTF-8的2倍)。 UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法兼容于ASCII编码。
记得采纳啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式