utf8编码的特点(为什么用utf8编码)
编码原理理解之「UTF-8」
UTF-8 (8位元, Universal Character Set/Unicode Transformation Format )是针对Unicode的一种可变长度字符编码。它可以用来表示 Unicode 标准中的任何字符,而且其编码中的第一个字节仍与 ASCII 相容,使得原来处理 ASCII 字符的软件无须或只进行少部份修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
总结下来, UTF8 有如下特点:
1)是 unicode 的一种实现方式;
2)是一种变长编码标准;
3)可以与 ASCII 码有效兼容;
4)应用超级广泛编码标准。
我们讲, UTF-8 是 unicode 的一种实现方式,那么,想要对一个字符进行 UTF-8 编码,首先我们要知道这个字符的 unicode 编码(字符的 unicode 编码是约定好的,全球统一不变的)。拿 unicode 编码的方式很简单,网上有很多 工具 可以做到。
接下来针对不同的 unicode 符号范围, utf-8 编码实际占用的字节数可能 1~4 字节不等??
总结下来,针对 UTF8 ,编码规则其实只有两条:
1) 单字节规则: 对于 单字节 的符号,字节的第一位(最高位)设为 0 ,后面 7 位为这个符号的 unicode 码。
2) n字节规则: 对于 n 字节的符号( n1 ),第一个字节的前 n 位都设为 1 ,第 n+1 位设为 0 ,后面字节的前两位一律设为 10 。剩下的没有提及的二进制位,全部为这个符号的 unicode 码。
以 「真」 举例,我们查到 「真」 的 unicode 编码是 \u771f ( \u 只是 unicode 的编码标记,其后面跟的还是 16 进制数),发现真的编码范围是 0x0800 ~ 0xffff 间,故选择 3字节 的编码方式??
我们将 0x771f 转化为2进制(共16位),并分成 4、6、6 三组,填入??编码方式的 「x」 的位置,得到 1110 0111 10 011100 10 011111 ,至此完成 「真」 的 utf-8 编码,转化为 16 进制描述即: 0xe79c9f 。
那么,有 mac 的小伙伴可以试试我提供的一套基于 iOS 的编码理解工程。可以快速打印出一段文本编码的数据结果( 16 进制、 2 进制都有),示例如下:
git地址:
对你有帮助的话记得帮我点个 「Star」 哦! ?????
为什么那么多网站钟情 UTF-8?
我认为UTF-8是很多人的选择,或者说,UTF-8几乎所有使用Linux进行编程的网络开放人员的的选择,钟情UTF-8的原因很多。
首先,UTF-8能兼容ASCII,这是一个非常重要的,至于ASCII的重要性,我想不用多做介绍。
第二,使用UTF-8能使乱码不扩散,我想这对于一个程序编程人员来说是十分重要的一点,大家都知道编程人员的辛苦,所以这也成了很多人的选择,使用UTF-8时,就算丢失一个字节,后面的文字也不会变成乱码,这样的优势,使得UTF-8成了大家的首选。
第三,不会出现错的结果,使用UTF-8的时候,不会因为两个中文字符放在一起而出现新的字符,从而导致搜索结果的错误,这一点让UTF-8在网络程序编程人员中非常受欢迎,尤其是在中国的人员之间。
第四,UTF-8拥有更大的字符集,也能打出更多的汉字,虽然这个特点在网站建设方面的意义不是特别大,毕竟网站上都是一些常用字。
第五,很多编程语言都是支持使用UTF-8的,有些指令在存入存储器的时候可以直接使用UTF-8编码,这一点是其他语言所不具备的,也是优势之一。
除此之外,UTF-8还是一个通用的解决方案,几乎所有网站变成都可以通过UTF-8编程。
希望有用。
gbk和utf8的区别
GBK,UTF8都是一种字符集,就是一种编码方式~\x0d\x0a\x0d\x0a字符集(Characterset)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,\x0d\x0a\x0d\x0a常见字符集名称:ASCII字符集、GB2312字符集、UTF8字符集、GB18030字符集、Unicode字符集等。\x0d\x0a\x0d\x0a计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。
什么是UTF-8编码?
8位Unicode转换格式(UTF-8)是一种用于编码各种字符的相对较新的代码约定。
它是字符标识的标准,也是各种编程语言和设备的参考,有助于标准化字母,数字和其他字符的显示。
在许多情况下,UTF-8取代了一种名为美国信息交换标准码(ASCII)的旧约定。
ASCII处理英语语言文本所需的所有字符,但UTF-8为不使用英语或罗马字母的其他语言处理更多不同的符号集。UTF-8被认为是与ASCII向后兼容的。