关于编码ANSI、GB2312、Unicode与UTF-8的区别
Python的ASCII,GB2312,Unicode,UTF-8相互转换

Python的ASCII,GB2312,Unicode,UTF-8相互转换ASCII 是⼀种字符集,包括⼤⼩写的英⽂字母、数字、控制字符等,它⽤⼀个字节表⽰,范围是 0-127 Unicode分为UTF-8和UTF-16。
UTF-8变长度的,最多 6 个字节,⼩于 127 的字符⽤⼀个字节表⽰,与 ASCII 字符集的结果⼀样,ASCII 编码下的英语⽂本不需要修改就可以当作 UTF-8 编码进⾏处理。
Python 从 2.2 开始⽀持 Unicode ,函数 decode( char_set )可以实现其它编码到 Unicode 的转换,函数 encode( char_set )实现 Unicode 到其它编码⽅式的转换。
⽐如("你好").decode( "GB2312")将得到u'\u4f60\u597d',即 "你"和“好"的 Unicode 码分别是 0x4f60 和 0x597d再⽤(u'\u4f60\u597d').encode("UTF-8")将得到'\xe4\xbd\xa0\xe5\xa5\xbd'它是 “你好”的UTF-8编码结果。
python中使⽤ unicode的关键:unicode是⼀个类,函数unicode(str,"utf8")从utf8编码(当然也可以是别的编码)的字符串str⽣成 unicode类的对象,⽽函数unc.encode("utf8")将unicode类的对象unc转换为(编码为)utf8编码(当然也可以是别的编码)的字符串。
于是,编写unicode相关程序,需要做的事情是 * 获取数据(字符串)时,⽤unicode(str, "utf8")⽣成unicode对象 * 在程序中仅使⽤unicode对象,对程序中出现的字符串常量都以u"字符串"的形式书写 * 输出时,可将unicode对象转换为任意编码输出,使⽤str.encode("some_encoding")>>> unicode("你好", "utf8")u'\u4f60\u597d'>>> x = _>>> type(x)>>> type("你好")>>> x.encode("utf8")'\xe4\xbd\xa0\xe5\xa5\xbd'>>> x.encode("gbk")'\xc4\xe3\xba\xc3'>>> x.encode("gb2312")'\xc4\xe3\xba\xc3'>>> print x你好>>> print x.encode("utf8")你好>>> print x.encode("gbk")以上是测试结果(Ubuntu 6.06,locale为utf8),注意type(x)和type("你好")的区别。
常用编码方式

常用编码方式常用编码方式编码是人类通讯的一种基本方式,对于计算机而言,为了能够处理和保存各种类型的数据,也需要有一种统一的编码方式。
以下是常用的几种编码方式:一、ASCII编码ASCII编码是美国信息交换标准代码的缩写,是一种基于拉丁字母的编码方式。
它定义了128个字符,包括数字、字母、标点符号和一些控制字符。
由于只有128个字符,存储效率和传输效率比较高,但是只能表示英文字符,不能表示汉字等其他语言的字符。
二、Unicode编码Unicode编码是国际组织制定的一种万国码,目的就是解决计算机处理多语言的问题。
Unicode编码采用32位编码方式,可以表示2^32个字符,不仅包括了世界上所有的语言文字,还包括了一些图形符号、表情符号等特殊符号。
三、UTF-8编码UTF-8编码是一种对Unicode编码进行转换的编码方式。
UTF-8编码采用变长编码方式,能够同样表示所有Unicode字符,但是在表示英文字符时只需要一个字节,而对于中文等其他常用字符采用3个字节表示,使得存储效率和传输效率都得到了优化。
四、GB2312编码GB2312编码是中国制定的中文编码方式,采用双字节编码,共收录了6763个汉字和682个非汉字字符。
GB2312编码虽然不能够表示所有的中文字符,但是对于一般的中文书写和交流已经够用。
在此基础之上,GB18030编码进行了扩充,可以表示Unicode完整字符集,包括了中文和其他字符。
五、Base64编码Base64编码是一种基于64个可打印字符的编码方式,常用于在数据传输时对二进制数据进行编码,以便于传输。
Base64编码可以将任何类型的数据转换为可打印的ASCII字符,但编码后会把数据长度增加到原来的4/3倍,这会造成一定程度上的数据冗余,在传输速度和存储空间中需要平衡考量。
六、URL编码URL编码是指对URL中的一些特殊字符进行编码,以便于在传输过程中不同的系统能够正确解析。
不同的编码格式介绍

不同的编码格式介绍近⽇需要不同的编码,关于上述编码,⼀直迷迷糊糊,查了些资料,总算⼤致了解了,下⾯全是从⽹上搜来的:1. ASCII和Ansi编码字符内码(charcter code)指的是⽤来代表字符的内码.读者在输⼊和存储⽂档时都要使⽤内码,内码分为单字节内码 -- Single-Byte character sets (SBCS),可以⽀持256个字符编码.双字节内码 -- Double-Byte character sets)(DBCS),可以⽀持65000个字符编码.前者即为ASCII编码,后者对应ANSI.⾄于简体中⽂编码GB2312,实际上它是ANSI的⼀个代码页9362. Unicode 如上,ANSI有很多代码页,使⽤不同代码页的内码⽆法在其他代码也正常显⽰,这就是为什么⽇⽂版/繁体中⽂版游戏⽆法在简体中⽂平台直接显⽰的原因.Unicode也是⼀种字符编码⽅法,不过它是由国际组织设计,可以容纳全世界所有语⾔⽂字的编码⽅案.它是⼀种2字节编码,能够提供65536个字符,这个数字是不够表⽰所有的字符的(汉语就有55000多字符),所以,通过⼀个代理对的机制来实现附加的917,476个字符表⽰,以达到所有字符都具有唯⼀编码.3.Unicode和BigEndianUnicode这两者只是存储顺序不同,如"A"的unicode编码为65 00其BigEndianUnicode编码为00 654. UTF-8这是为传输⽽设计的编码,其系列还有UTF-7和UTF-16其中UTF-16和Unicode编码⼤致⼀样, UTF-8就是以8位为单元对Unicode进⾏编码。
从Unicode到UTF-8的编码⽅式如下: Unicode编码(16进制) UTF-8 字节流(⼆进制) 0000 - 007F 0xxxxxxx 0080 - 07FF 110xxxxx 10xxxxxx 0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx 例如“汉”字的Unicode编码是6C49。
关于编码ansi

关于编码ansi、GB2312、unicode与utf-8的区别先做一个小小的试验:在一个文件夹里,把一个txt文本(文本里包含“今天的天气非常好”这句话)分别另存为ansi、unicode、utf-8这三种编码的txt文件。
然后,在该文件夹上点击右键,选择“搜索(E)…”。
搜索“天气”二字,可以搜索出ansi和unicode这两种编码的txt文件,搜索不出utf-8编码的文件。
原因:1.中文操作系统默认ansi编码,生成的txt文件默认为ansi编码,所以,可以搜索出来。
2.unicode是国际通用编码,所以,可以搜索出来。
3.utf-8编码是unicode编码在网络之间(主要是网页)传输时的一种“变通”和“桥梁”编码。
utf-8在网络之间传输时可以节约数据量。
所以,使用操作系统无法搜索出txt文本。
按照utf-8创始人的愿望:端(unicode)——传输(utf-8)——端(unicode)但是,后来,许多网站开发者在开发网页时直接使用utf-8编码。
端(utf-8)——传输(utf-8)——端(utf-8)所以,在浏览器上看到的编码是:unicode(utf-8)。
正因为在浏览器上这么并列地列出unicode (utf-8),造成许多网友(甚至不少程序员)误认为unicode=utf-8。
其实,按照utf-8创始人的原意,在开发网页时使用utf-8编码是错误的做法,并且,早期的浏览器也不支持解析utf-8编码。
但是,众人的力量是巨大的,微软不得不“趋炎附势”,在浏览器上支持解析utf-8编码。
问题是:utf-8编码影响了网站开发者,或者说,网站开发者“扩展”了utf-8编码的使用范围。
但是,网站开发者仍然无法影响各类文档的开发者,所以,word文档和一些国际通用的文档仍然使用unicode编码而不使用utf-8编码。
比如:“严”的Unicode码是4E25,UTF-8编码是E4B8A5,两者是不一样的。
GB2312、GBK与UTF-8的区别

GB2312、GBK与UTF-8的区别这是一个异常经典的问题,有无数的新手站长每天都在百度这个问题,而我,作为一个“伪老手”站长,在明白这个这个问题的基础上,有必要详细的解答一下。
首先,我们要明白,GB2312、GBK和UTF-8都是一种字符编码,除此之外,还有好多字符编码。
只是对于我们中国人的网站来说,用这三种编码比较多。
简单的说一下,为什么要用编码,在计算机内,储存文本信息用ASC II码,每一个字符对应着唯一的ASCII码。
最初计算机是由美国发明的,他们也用的是键盘和上面的字母,所以他们的字符ASCII好解决。
但是我们中国的就不同了,每个汉字要对应唯一的ASCII码。
这样,就出来了国家制定的字符编码标准:GB2312、GBK等。
其他国家,其他语言也有他们对应的编码标准。
GB 就是国标的意思,GB2312和GBK主要用于汉字的编码,而UTF-8是全世界通用的。
意思就是说,如果你的网页主要面对使用汉语的中国人的话,使用GB2312和GBK非常好,文字储存体积要小,有一些优点。
如果你的网页要面向世界的话,你再用GB2312和GBK作为网页编码的话,有些电脑上的浏览器没有这种编码,你的网页汉字内容就会变成无法识别的乱码。
它们通常用在网页的meta标签内,例如:<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″/>,表示这个页面使用的是GB2312编码。
这个信息是给浏览器看的,浏览器会优先考虑使用从网页头部提取出来的编码信息对网页进行解码。
当然,我们也可以强制浏览器使用某种编码解释网页,这样我们就看到了传说中的乱码。
请看下图IE浏览器:百度首页使用的是GB2312编码,我们可以看到现在是正常的。
我们右击页面,选择“编码”->“其他”->“Unicode(UTF-8)”,意思就是强制浏览器使用UTF-8的编码方式解析页面,我们可以看到奇迹发生了:百度页面上所有的汉字都变成了乱码。
ansi编码和utf编码

ANSI编码和UTF编码是两种不同的字符编码方式,它们有一些区别:
1.编码范围:ANSI编码使用一个字节(8位)来表示一个字符,
编码范围是0x00-0xFF,只能表示最多256个不同的字符。
而
UTF编码使用多个字节来表示一个字符,编码范围更大,可以
表示数百万个不同的字符。
2.字符集:ANSI编码主要基于ASCII字符集,只能表示基本的英
文字符和一些特殊字符,而不能表示其他语言(如中文、日文、韩文等)的字符。
而UTF编码可以表示包括中文、日文、韩文
在内的多种语言字符。
3.编码方式:ANSI编码是一种单字节编码方式,每个字符占用一
个字节,而UTF编码是一种多字节编码方式,根据不同的字符
使用1到4个字节来表示。
4.兼容性:由于ANSI编码是基于ASCII字符集的,因此与ASCII
码兼容。
而UTF编码与ASCII码不兼容。
总的来说,ANSI编码和UTF编码的主要区别在于编码范围、字符集、编码方式和兼容性等方面。
在实际使用中,根据需要选择合适的编码方式来处理不同语言的字符数据。
utf8与gb2312有什么区别

utf8 或 UTF_8) 来表示 UTF-8, 当然除非你指的是一个变量名而不是这种编码本身.
什么编程语言支持 Unicode?
在大约 1993 年之后开发的大多数现代编程语言都有一个特别的数据类型, 叫做 Unicode/ISO 10646-1 字符. 在 Ada95
字符的文件在 ASCII 和 UTF-8 两种编码方式下是一样的.
所有 >U+007F 的 UCS 字符被编码为一个多个字节的串, 每个字节都有标记位集. 因此, ASCII 字节 (0x00-0x7F)
不可Байду номын сангаас作为任何其他字符的一部分.
表示非 ASCII 字符的多字节串的第一个字节总是在 0xC0 到 0xFD 的范围里, 并指出这个字符包含多少个字节.
U-00000800 - U-0000FFFF:
1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF:
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
utf8与gb2312有什么区别
gb2312是GBK的子集,GBK是gb18030的子集
GBK是包括中日韩字符的大字符集合
如果是中文的网站 推荐gb2312 GBK有时还是有点问题
为了避免所有乱码问题,应该采用utf-8,将来要支持国际化也非常方便
中文字符集的编码

中文字符集的编码
中文字符集的编码标准有很多,其中最常见的是GB2312、GBK、
GB18030和UTF8。
这些编码标准主要用于处理中文字符在计算机中的表
示和存储。
GB2312,全称《信息交换用汉字编码字符集·基本集》,是中国国家强制
标准,包含了6763个常用汉字和非汉字字符。
该标准的字符集是分为两个区的,其中01-09区是特殊符号区,16-55区是一级汉字区,56-87区是
二级汉字区。
GBK是在GB2312的基础上扩大了更多汉字,支持繁体中文和部分其他语
言字符。
GB18030则是更全面的中文字符集,可以表示超过七万字,并且包括了许多不常见的汉字。
UTF8是一种变长字节表示的Unicode字符集,可以用来表示任何Unicode标准中的字符,包括中文字符。
总的来说,不同的编码标准适用于不同的应用场景,因此在处理中文字符时,需要根据实际需求选择合适的编码标准。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于编码ANSI、GB2312、Unicode与UTF-8的区别
先做一个小小的试验:
在一个文件夹里,把一个txt文本(文本里包含“今天的天气非常好”这句话)分别另存为ANSI、Unicode、UTF-8这三种编码的txt文件。
然后,在该文件夹上点击右键,选择“搜索(E)…”。
搜索“天气”二字,可以搜索出ANSI和Unicode这两种编码的txt文件,搜索不出UTF-8编码的文件。
(不一定)
原因:
1.中文操作系统默认ANSI编码,生成的txt文件默认为ANSI编码,所以,可以搜索出来。
2.Unicode是国际通用编码,所以,可以搜索出来。
3.UTF-8编码是Unicode编码在网络之间(主要是网页)传输时的一种“变通”和“桥梁”编码。
UTF-8在网络之间传输时可以节约数据量。
所以,使用操作系统无法搜索出txt文本。
(UTF-8表示的大部分字符是西文字符时,可以节约数据量;如果大部分字符是非西文字符,反而会增大数据量。
)
按照UTF-8创始人的愿望:
端(Unicode)——传输(UTF-8)——端(Unicode)
但是,后来,许多网站开发者在开发网页时直接使用UTF-8编码。
端(UTF-8)——传输(UTF-8)——端(UTF-8)
所以,在浏览器上看到的编码是:Unicode(UTF-8)。
正因为在浏览器上这么并列地列出Unicode(UTF-8),造成许多网友(甚至不少程序员)误认为Unicode=UTF-8。
其实,按照UTF-8创始人的原意,在开发网页时使用UTF-8编码是错误的做法,并且,早期的浏览器也不支持解析UTF-8编码。
但是,众人的力量是巨大的,微软不得不“趋炎附势”,在浏览器上支持解析UTF-8编码。
问题是:UTF-8编码影响了网站开发者,或者说,网站开发者“扩展”了UTF-8编码的使用范围。
但是,网站开发者仍然无法影响各类文档的开发者,所以,Word 文档和一些国际通用的文档仍然使用Unicode编码而不使用UTF-8编码。
比如:“严”的Unicode码是4E25,UTF-8编码是E4B8A5,两者是不一样的。
在中文和日文操作系统里生成的(txt和xml)文件的编码虽然都是ANSI,但是,在简体中文系统下,ANSI 编码代表 GB2312 编码;在繁体中文系统下,ANSI 编码代表 Big5 编码;在日文操作系统下,ANSI 编码代表 JIS 编码。
不
同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
结论:国际文档(txt和xml)使用Unicode编码是正宗做法;操作系统和浏览器都能够“理解”Unicode编码。
浏览器“迫于压力”才“理解”UTF-8编码。
但是,操作系统有时只认Unicode编码。
Unicode与Unicode big endian的区别:你吃鸡蛋时先吃小头还是先吃大头?Unicode与Unicode big endian的区别就是在编码时小头优先与大头优先的区别。
“随波逐流”使用Unicode就OK了。
我(不是程序员)这几年一直因为编码问题,感到非常困惑,查了许多资料,在国际文档的实际应用中也遇到过许多问题,所以,“感性”地总结了上述观点,不一定准确(或者说,不一定正确)。
ANSI(American National Standards Institution 美国国家标准学会)相当于是各地区字符编码的别名,目的是为了兼容已经既成事实的各地区字符编码集。
因为Unicode是在各地区字符编码集(如中文的GB系列编码,繁文的Big5编码,日文的JIS编码等等)之后才出现的,而Windows在采用Unicode的时候要考虑和各国已有字符编码兼容,因此“中文版Windows操作系统”中的默认编码仍然采用GB系列编码;“繁体版Windows操作系统”中的默认编码仍然采用Big5编码;“日文版Windows操作系统”中的默认编码仍然采用JIS编码。
而这些地区性编码在美国的MS公司看起来,它们都被统称为ANSI编码了。