上面的汉字编码,统一称为“DBCS”(Double Byte Charecter Set双字节字符集)。
这时一个汉字算两个英文字符
—————————————————————————————————————————————————
各个地区都发明了适合自己的编码,在国际上就难以很好的交互,于是国际化标准组织(ISO)重新编排了一个编码方案,包括了地球上所有文化、所有字符和符号,这个编码叫做【UCS】"Universal Multiple-Octet Coded Character Set",俗称【unicode】
unicode编码规定:所有字符都用2个字节(16位)来表示,原ascii码中的半角字符,低位不变,高8位永远是0。这样保存英文时就会浪费多一倍空间。 此时出现的问题是,怎么分辨unicode码和ascii码?还有英文存储永远都浪费了一倍的空间。 所以unicode在很长一段时间都无法推广,直到互联网出现。为解决unicode在网络传输问题,出现了众多的【UTF】(UCS Transfer Format)标准。【UTF-8】就是每次8个位传输数据,【UTF-16】就是每次16个位传输数据。 【UTF-8】就是在互联网上使用最广的一种unicode的实现方式。从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换。 它是一种变长的编码方式: 1. 单字节的字符,字节的第一位设为0,对于英语文本,UTF-8码只占用一个字节,和ASCII码完全相同; 2. n个字节的字符(n>1),第一个字节的前n位设为1,第n+1位设为0,后面字节的前两位都设为10,这n个字节的其余空位填充该字符unicode码,高位用0补足。 这样就形成了如下的UTF-8标记位: 0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx 10xxxxxx 10xxxxxx 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 原网页链接:https://www.zhihu.com/question/23374078