ascii、unicode、utf-8、gbk 区别?

发展史: https://www.cnblogs.com/houxt/p/11250878.html

python2内容进行编码(默认ascii),而python3对内容进行编码的默认为utf-8。
ascii: 最多只能用8位来表示(一个字节),即:2**8 = 256(即pow(2,8)=256),所以,ASCII码最多只能表示256个符号。
unicode:万国码,任何一个字符==两个字节
utf-8:万国码的升级版,一个中文字符==三个字节,英文是一个字节,欧洲的是2个字节
gbk:国内版本,一个中文字符==2个字节,英文是一个字节
gbk转utf-8,则需通过媒介unicode

ascii

A:00000010 8位 一个字节

unicode

A:00000000 00000001 00000010 00000100 32位 四个字节

中:00000000 00000001 00000010 00000100 32位 四个字节

utf-8

A:00000110 8位 一个字节

中:00000010 00000110 16位 两个字节

gbk

A:00000110 8位 一个字节

中:00000010 00000110 16位 两个字节

1,各个编码之间的二进制,是不能互相识别的,会产生乱码。

2,文件的存储,传输,不能是unicode (只能是utf-8 utf-16 gbk gbk2312 ascii等)

python3

  str  在内存中是Unicode编码。

    bytes类型

    对于英文:

      str:表现形式:s = ‘alex‘

         编码方式:010101010 unicode

     bytes:表现形式:s = b‘alex‘

          编码方式:000101010 utf-8 gbk。。。。

    对于中文:

       str:表现形式:s = ‘中国‘

          编码方式:010101010 unicode

     bytes: 表现形式:s = b‘ x\e91\e91\e01\e21\e31\e32‘

           编码方式:000101010 utf-8 gbk。。。。

 encode 编码,如何将 str ——> bytes

    使用方法:  str.encode(‘utf-8‘)

 decode 解码,如何将 bytes——> str

使用方法:  bytes.decode(‘utf-8‘)

原文地址:https://www.cnblogs.com/Rivend/p/12043962.html

时间: 2024-10-09 18:21:05

ascii、unicode、utf-8、gbk 区别?的相关文章

各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

转自:http://blog.csdn.net/lvxiangan/article/details/8151670 GBK,ISO-8859-1,GB2312的本质区别编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标准但是后来计算机普及了 于是就中国要使用计算机了 但是机器不认得中文,于是就有了国际码. gbk gb2312都是这类.两个其实一个,一个是标准(发布的代号),一个是简称.后来多了个阿拉

常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、UTF-8、unicode

ASCII ASCII码是7位编码,编码范围是0x00-0x7F.ASCII字符集包括英文字母.阿拉伯数字和标点符号等字符.其中0x00-0x20和0x7F共33个控制字符.只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位.HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码.早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式.GB2312 GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94

关于编码的发展演变:ASCII、GB2312、GBK、gb18030、Unicode、UTF-8

[1]ASCII 每个字符占据1bytes(字节),第一次以规范标准发表是在1967年,最后一次修订是在1986年.用二进制表示的话最高位必须为0(扩展的ASCII不在考虑范围内),因此ASCII只能表示128个字 [2]GB2312 最早一版的中文编码(1980年),每个字占据2bytes.由于要和ASCII兼容,那这2bytes最高位不可以为0了(否则和ASCII会有冲突).在GB2312中收录了6763个汉字以及682个特殊符号,已经囊括了生活中最常用的所有汉字. [3]GBK 由于GB2

从字符集发展史看Unicode和UTF-8的区别

从字符集发展史看Unicode和UTF-8的区别 版权声明 本文并非本人原创,其内容来源于网络,本文根据其演绎而来,具体出出已经无法考证,在这里只好给出我所参考的连接. 知乎 https://www.zhihu.com/question/23374078/answer/69732605 于洋的回答 ASCII编码 我们都知道计算机来源于美国,并且计算机它比较笨,只知道 0 和 1 也就是电路的通和断(0或1即是一个二进制位).那么美国人怎么使用计算机来存储他们的信息呢? 他们想了一个办法.将8个

PHP字符编码ASCII 、GB2312、GBK、UTF-8解释

变量命名规则:1.  变量名区分大小写(case-sensitive) .2.  必须字母或下划线开头.变量名可由 字母.数字.下划线组成.  看 到这里可能,很多人纳闷了~.那为啥  $我是变量    这样的中文也能做变量名呢? 在PHP里,中文的确是可以做变量名的(能用是能用但千万别项目上用....) . 因为这里的字母是指: a-z   A-Z  和  扩展ASCII 字符里从 127 到 255  ,16进制表示为:0x7f-0xff   . 那意思就是ASCII字符里从127到255

UNICODE与ANSI的区别

什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit.(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容.目前,在网络.Windows系统和很多大型软件中得到应用.8bit的ANSI编码只能表示256种字符,表示26个英文字母是绰绰有余的,但是表示汉字,韩国语等有着

关于ANSI,unicode与utf-8的区别

关于ANSI,unicode与utf-8的区别 非常好的一篇文章,值得一看,特转之 关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本(文本里包含“今天的天气非常好”这句话)分别另存为ansi.unicode.utf-8这三种编码的txt文件.然后,在该文件夹上点击右键,选择“搜索(E)…”. 搜索“天气”二字,可以搜索出ansi和unicode这两种编码的txt文件,搜索不出utf-8编码的文件. 原因: 1.中文操作系统默

文字编码ASCII,GB2312,GBK,GB18030,UNICODE,UCS,UTF的解析

众所周知,一个文字从输入到显示到存储是有一个固定过程的,其过程为:输入码(根据输入法不同而不同)→机内码(根据语言环境不同而不同,不同的系统语言编码也不一样)→字型码(根据不同的字体而不同)→存储码(根据保存的编码类型不同而不同).不同的存储码之间又有什么异同呢? 一.ASCII系列编码 首先来说明ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),这个编码的时代就久远了,是由美国国家标准局(ANSI)制定,目

ascii、unicode、utf-8、gbk 区别

原文:https://blog.csdn.net/u010262331/article/details/46013905 ASCII:遇上0×10, 终端就换行: 遇上0×07, 终端就向人们嘟嘟叫: 遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母.把这些0×20以下的字节状态称为"控制码".把所有的空 格.标点符号.数字.大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了.大家看到这样,都感觉很好,于是大家都把这个方