首页
学习
活动
专区
圈层
工具
发布

Unicode and UTF-8

绝大多数程序员都听说过 Unicode 和 UTF-8,但是清楚它们之间关系的人就不多了,关于这个问题,与其苍白的陈述它们的概念,不如举例子说明来得自然。 我前些天碰到一个需求:随机生成几个汉字。...单单从上面一个例子还不足以说明问题,下面我们挑选一个「博」字深入说明一下: Unicode 因为我们编码是 UTF-8,所以就先看看「博」字的 UTF-8 编码是什么: unicode code point 就隐藏在这里。...通常汉字用 UTF-8 表示时是三个字节,格式为「111XXXXX 10XXXXXX 10XXXXXX」,除掉标志位,把剩余对应位置上的数据抽取出来连接在一起,就得到了 Unicode code point...到底 Unicode 和 UTF-8 是什么关系?一句话:Unicode 是字符集;UTF-8 是编码。

1.2K30

ansi unicode_ansi unicode utf-8

采用Unicode编码存储的文本文档: 采用ANSI编码存储的文本文档: 在用Unicode对文字进行编码时,头两个字节一定是FF FE,这样用来标识此文档以Unicode...另外,本文中所述Unicode编码也不严谨,应为UTF16编码。...采用Unicode会产生的缺点就是:如果一篇文章里全是英文,那么,采用Unicode方式编码存储,所占用的存储空间会大约增加一倍(因为头部还要多两个字节的FF FE标识),但是采用Unicode编码的好处就是适合同一文档中采用不同语言的文字...,因此Unicode编码广泛应用于xml语言和编写多语言程序。...在本文的第二组图中,可以看到,采用Unicode编码的大写英文字母A,其编码为00 41(之前曾经解释了Windows在处理Unicode字符的时候先处理低八位,后处理高八位),因为Unicode存储的任何字符都占用

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    UNICODE,GBK,UTF-8

    UNICODE,GBK,UTF-8 UNICODE,GBK,UTF-8     简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的...整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。...我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian)...对于Unicode(UCS2)、GBK、UTF-8这些编码方式,我原来就了解。但这个程序让我有些糊涂,想不起来UTF-16和UCS2有什么关系。...按照其它编码解释,可能找不到对应的字符,也可能找到错误的字符。所谓“错误”是指与文本作者的本意不符,这时就产生了乱码。 答案是Windows按照当前的缺省代码页去解释文本文件里的字节流。

    3.1K20

    Unicode,GBK和UTF-8

    但如果有人问你,“Unicode,GBK和UTF-8有什么区别?”, 你能自信地给他一句简短清晰的回答吗? 如果不能的话, 那还是看一下这篇文章吧....如果用utf8编码后错误地用gbk来解码, 就会得到3个unicode码点,分别表示字符浣,犲和ソ;而如果用gbk编码后 错误地用utf8来解码, 则在解码第二个字符时无法凑够3个字节, 因此会得到未知的结果...注: 本文的python代码示例是在Linux Terminal下运行的, 因此默认为utf-8编码, 如果你是在Windows cmd里运行, 则通常默认GBK编码, 因此乱码会在不同地方出现:)...后记 说了这么多, 现在让我们回到一开始的问题, 如果有人问你"Unicode,GBK和UTF-8有什么区别?”..., 我想你应该知道该怎么回答了吧: Unicode是 一种字符集, 而GBK和UTF-8都是编码, 因此Unicode和后两者不是一类事物, 是无法进行对比的.

    2.1K20

    Python 有关 Unicode UTF-8 GBK 编码问题详解

    unicode 在很长一段时间内无法推广,直到互联网的出现。 2.UTF-8 编码 互联网的普及,强烈要求出现一种统一的编码方式。UTF-8 就是在互联网上使用最广的一种 unicode 的实现方式。...重复一遍,这里的关系是,UTF-8 是 Unicode 的实现方式之一。 UTF-8 最大的一个特点,就是它是一种变长的编码方式。...UTF-8 的编码规则很简单,只有二条: 对于单字节的符号,字节的第一位设为 0,后面 7 位为这个符号的 unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。...-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Python...(f.read()) 错误信息: (result, consumed) = self.

    2.3K21

    ASCII,Unicode和UTF-8

    三、Unicode编码 正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。...五、UTF-8编码 互联网的普及,强烈要求出现一种统一的编码方式。UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。...六、Unicode 与 UTF-8 之间的转换 通过上一节的例子,可以看到严的 Unicode码 是4E25,UTF-8 编码是E4B8A5,两者是不一样的。它们之间的转换可以通过程序实现。...里面有四个选项:ANSI,Unicode,Unicode big endian和UTF-8。 1)ANSI是默认的编码方式。...8的规定) 文章转载自:阮一峰老师的字符编码笔记:ASCII,Unicode 和 UTF-8

    1.5K130

    Unicode与UTF-8的区别

    计算机用两个字节存储,一个是高位字节0x12,一个是低位字节0x34,它的存储方式为下: UTF-32用四个字节表示,处理单元为四个字节(一次拿到四个字节进行处理),如果不分大小端的话,那么就会出现解读错误...3、UTF-8 UTF-8就是使用变长字节表示,顾名思义,就是使用的字节数可变,这个变化是根据Unicode编号的大小有关,编号小的使用的字节就少,编号大的使用的字节就多。...UTF-8的编码规则是: ① 对于单字节的符号,字节的第一位设为0,后面的7位为这个符号的Unicode码,因此对于英文字母,UTF-8编码和ASCII码是相同的。...下面我们来具体看看具体的Unicode编号范围与对应的UTF-8二进制格式 那么对于一个具体的Unicode编号,具体怎么进行UTF-8的编码呢?...三、总结: UTF-8、UTF-16、UTF-32都是Unicode的一种实现。 -END-

    87720

    Unicode?utf-8?GB2312?

    Unicode、Ascall、GB2312、UTF-8等字符编码之间的关系,廖老师是这样说的: 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。...所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。...UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。...,对中文的处理还有很多问题,经常在Unicode和GB2312、utf-8这些编码上产生疑问,网上也有很多这方面的解决方案(如下图) 但都是可移植性不高的方案,后来用了5.x之后的pycharm版本后...但如果是用python3的话,这些编码的问题便没有了,如下图,python3对中文的处理是自动化的了。 ?

    2.2K90

    Python中GBK, UTF-8和Unicode的编码问题

    那么Python 2.x中的字符串究竟是个什么呢? 基本编码知识 在了解Python中字符串(String)的本质前,我们需要知道ASCII、GBK、UTF-8和Unicode的关系究竟几何。...由于Unicode编码的字符串体积很大,因此一般来说Unicode编码只是文字在内存中的内在形式,具体的存储(如文件、网页等)都需要靠外在的编码(UTF-8、GBK等)诠释。...Python2.x中字符串的本质 Python中实际上有两种字符串,分别是str类型和unicode类型,这两者都是basestring的派生类。...相比于str,unicode是真正的字符串。Python明确地知道它的编码,所以可以很自信地获得一个字符串的实际字数。...原文地址:Python中GBK, UTF-8和Unicode的编码问题, 感谢原作者分享。

    4.8K10

    Unicode,ASCII,UTF-8的区别

    UTF8 所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。...UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。...计算机中通用的字符编码的工作方式 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。...用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件: ?...浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器: ?

    10.5K53

    Unicode与UTF-8的区别

    UTF-32用四个字节表示,处理单元为四个字节(一次拿到四个字节进行处理),如果不分大小端的话,那么就会出现解读错误,比如我们一次要处理四个字节 12 34 56 78,这四个字节是表示0x12 34...3、UTF-8 UTF-8就是使用变长字节表示,顾名思义,就是使用的字节数可变,这个变化是根据Unicode编号的大小有关,编号小的使用的字节就少,编号大的使用的字节就多。...UTF-8的编码规则是: ① 对于单字节的符号,字节的第一位设为0,后面的7位为这个符号的Unicode码,因此对于英文字母,UTF-8编码和ASCII码是相同的。...下面我们来具体看看具体的Unicode编号范围与对应的UTF-8二进制格式 ? 那么对于一个具体的Unicode编号,具体怎么进行UTF-8的编码呢?...三、总结: UTF-8、UTF-16、UTF-32都是Unicode的一种实现。 -END-

    1.9K20

    Unicode 和 UTF-8 有何区别?

    unicode在很长一段时间内无法推广,直到互联网的出现,为解决unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8...UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。 UTF-8最大的一个特点,就是它是一种变长的编码方式。...个字节,而UTF-8一个中文字符占3个字节)。...Unicode符号范围 | UTF-8编码方式 (十六进制) | (二进制) —————————————————————– 0000 0000-0000 007F | 0xxxxxxx 0000 0080...后来互联网火了,国际标准组织又搞出了utf-8/utf-16/utf-32,这三个编码方案主要是面向传输的,当然也是一种存储方案,这时候,unicode才被全世界所应用。

    81220

    UNICODE,GBK,UTF-8区别

    UNICODE,GBK,UTF-8区别     简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的...整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、Unicode big endian和UTF-8这几种编码方式间相互转换。...我很早前就发现Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian)...按照其它编码解释,可能找不到对应的字符,也可能找到错误的字符。所谓“错误”是指与文本作者的本意不符,这时就产生了乱码。 答案是Windows按照当前的缺省代码页去解释文本文件里的字节流。...参考推荐: UNICODE,GBK,UTF-8区别 字符编码详解及由来(UNICODE,UTF-8,GBK) gbk, gb2312,big5,unicode,utf-8,utf-16之间的关系 中文字符集简介

    3.4K21

    怎么理解Unicode,utf-8,ASCII这些编码?

    昨天文章发出来后,有几个读者问我,编码这块怎么掌握,感觉总是很模糊,就知道个utf-8编码,到底如何掌握。...:https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8 ASCII编码一共规定了128个字符的编码,是美国人上世纪...如果使用2个字节表示一个符号,可能性有:256 x 256 = 65536种 上面提到Unicode只是一个字符集,不管存储实现它们的事情。同一个字符使用不同的存储方法,解析出来就会有很大问题。...UTF-8编码被互联网广泛使用,它是Unicode字符集的一种极佳的存储方法。首先它是变长度,存储ASCII字符时,用1个字节存储它;存储汉字时,使用至少3个字节。...UTF-8有一套设计精良的编码规则,感兴趣的可以去看看。

    1.4K20

    字符编码笔记:ASCII,Unicode和 UTF-8

    3.Unicode 正如上一节所说,世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。...重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。 UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。...UTF-8的编码规则很简单,只有二条: 1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。...Unicode与UTF-8之间的转换 通过上一节的例子,可以看到“严”的Unicode码是4E25,UTF-8编码是E4B8A5,两者是不一样的。它们之间的转换可以通过程序实现。...里面有四个选项:ANSI,Unicode,Unicode big endian 和 UTF-8。 1)ANSI是默认的编码方式。

    2.4K51

    简述 ascii、unicode、utf-8、gbk 的关系

    Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。...这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。 互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种Unicode的实现方式。...UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。UTF-8中,英文占一个字节,中文占3个字节。...由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。windows默认编码GBK,中文占2个字节。  ...比如,“李杰”,在  utf-8中,一个英文占一个字节,一个中文占3个字节,此处“李杰”占6个字节。GBK中一个中文占2个字节,此处“李杰”占4个字节。

    2.1K10
    领券