这篇讲编码基础的博客非常浅显易懂,记录一下。
字符编码的概念(UTF-8、UTF-16、UTF-32都是什么鬼)
前几天面试问了一个utf-8和utf-16的区别,今天来总结一下。
Unicode是一种字符集,每一个字符对应一个唯一的编号,同时兼容ASCII码,ASCII码在Unicode中还是用一个字节长度就可以表示,而常见的汉字在Unicode中可能是两个字节才能表示,所以在Unicode字符集中不同的字符可能对应不同长度的二进制编码。
所以程序并不能直接处理Unicode这种编码,比如客户端传给服务器一段字节流,服务器程序并不知道是哪几个字节表示一个字符。
所以需要另外一种编码方式,这种编码能够直接告诉计算机这一段字节流中哪几个字节可以表示一个字符,从而能够将二进制编码转换成对应的字符。
即需要一种将Unicode转换为计算机能读懂的编码,这便是UTF,UTF 是 Unicode Transformation Format 的缩写,即Unicode转换格式。
有utf-8,utf-16,utf-32三种编码方式。
utf-8:变长的编码方案,用1~6个字节编码一个字符。
如果一个字节的最高位是0,表示是单字节编码;
多字节编码:第一个字节中从最高位开始1的个数就表示几个字节来编码一个字符,其余的都是以10开始。
0xxxxxxx 单字节编码;
110xxxxx 10xxxxxx 双字节编码;
1110xxxx 10xxxxxx 10xxxxxx 三字节编码;
x表示Unicode中的编码。
utf-16:用2个或者4个字节表示一个字符。
Unicode 中编码范围在0000~FFFF的,utf-16直接存储。
utf-32:用4个字节编码一个字符。
长度固定。
1738

被折叠的 条评论
为什么被折叠?



