请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Unicode 的问题

老师你好,

“UTF-8 是以字节为单位为 Unicode 进行编码” 这句话是啥意思啊?没太理解。

正在回答

1回答

同学很细心,这句话应该是老师在课上只是简单提到一下,不算是课程的重点内容,不过同学抓住了,这里简单介绍下,可以作为拓展去理解。

Unicode有多种UTF-的编码,UTF-8只是其中一种,还有UTF-16等等,他们的编码方式是不一样的,而UTF-8以字节为单位进行编码是相比其他方式的Unicode编码的不同之处。

1 回复 有任何疑惑可以回复我~
  • 提问者 sai1024 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-09-03 08:08:20
  • 我在说的细一些   也让老师看看我理解的对不对
    
    Unicode由于是万国码,很显然一个字节无法存储(因为一个字节的上限是256,其实就是ASCII扩展字符集),所以Unicode第一个版本是用2字节存储的(2个字节是2的16次方,共65536个)  其中0至127这128个数字表示的字符仍然跟ASCII完全一样
    
    其中UTF-16就是无论什么字符都使用两个字节来表示,这时候问题就来了
    
    比如a(还有所有的ASCII编码字符都一样)在ASCII中只需要一个字符,而用了Unicode,却需要两个字符,这不是浪费空间吗
    
    所以聪明的工程师就创建了UTF-8,UTF-8的第一个位(是bit)表示了这个字符需要几个字节,如果是可以用一个字节表示的,那就占用一个字节大小,否则占用两个字节大小,所以可以认为UTF-8是UTF-16的一个优化版本,优化的是占用空间的大小
    
    但事情有一利就有一弊,UTF-8的第一位被用来表示长度了,那相比UTF-16能存储的上限就少了,所以就有了后续的Unicode版本2,用四个字节存储字符,也就出现了UTF-32   原理都差不多
    
    老师我的理解没问题吧?我记得这是我学php的时候老师讲的
    回复 有任何疑惑可以回复我~ 2020-01-19 13:42:18
  • 是这样的,很详细的补充。点赞。
    回复 有任何疑惑可以回复我~ 2020-01-20 09:44:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信