python字符编码小结
首先简要说一下各种字符编码:
1. ASCII
计算机只认识0101,但如何让计算机认识人类语言?将每个字母和符号给予固定的编号,然后将这个编号转换成二进制,计算机就可以正确识别这些字母与符号,同时计算机也可以逆操作,将二进制转换成对应的编号在翻译成相应的字符来显示给人类,所以产生了ASCII编码。ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。
2. GB2312
计算机是美国人发明的,所以美国佬搞了个ASCII编码,但是我们中国人也得用计算机不是,如何让计算机认识中文?所以中国国家标准总局搞了个GB2312编码来让计算机认识中文,后来又搞了一个GBK来扩展了一些中、日、韩的文字,这样,计算机可以认识中文了。
3. Unicode
现在中文、英文可以被识别,但问题来了,世界还有阿拉伯语、西班牙语、日语、韩语等其他语言,所以就搞了一个Unicode编码,支持所有国家的语言,所以Unicode被称为统一编码或者万国码。
4. UTF-8
Unicode收录了世界上所有语言中的文字,所以速度就会变慢,为了提升效率,就有了一种中间的字符集: UTF, 我们常用的UTF-8就是其中一种。
为了处理英文,有了ASCII编码
为了处理中文,有了GB2312
为了处理各国字符,有了Unicode
为了提升效率,有了UTF-8
对于Unicode,长这个样字: \u751F\u5316\u5371\u673A
我们认识吗?不认识,所以需要转换成utf-8
这里牵扯到encode和decode (encode代表将字符串编码为Unicode,decode代表将Unicode解码为decode)
在python3中 str字符串是没有办法直接decode的,所以先encode再decode
data = r'\u751F\u5316\u5371\u673A'
print(data.encode('utf-8').decode('unicode_escape'))
(单引号前的哪个r,代表这个字符串为原始字符,即忽略所有转义符)
但是在爬数据时,尤其是获取html页面中文字时,会出现这种东西: 沃尔玛
这是啥呢? 这也是Unicode,但是这时经过html转移后的Unicode,这东西需要转换成呢我们认识的汉字:
from html import unescape
str = '沃尔玛'
print(unescape(str))
调用html库里边的unescape来进行解码,
那如果要将汉字编码成 沃尔玛 这种问麽办?
from html import escape
content = '<image id="德玛西亚">'
print(escape(content))
这是一个标签,经过编码后的结果是:
看来 这个只能将标签符号进行编码,英文、中文、等号不能够进行编码。
想了解更多Python关于爬虫、数据分析的内容,欢迎大家关注我的微信公众号:悟道Python
python字符编码小结的更多相关文章
- python --- 字符编码学习小结(二)
距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...
- python 字符编码练习
通过下面的练习,加深对python字符编码的认识 # \x00 - \xff 256个字符 >>> a = range(256)>>> b = bytes(a) # ...
- Python字符编码讲解
声明:本文参考 Python字符编码详解 在计算机中我们不管用什么语言和程序,最终数据在计算机中的都是字节码(也就是01形式)的形式存在的,如果 计算机直接把字节码显示在屏幕上,很明显一般人看不懂字节 ...
- 深入理解Python字符编码--转
http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...
- 深入理解Python字符编码
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...
- Python字符编码详解,str,bytes
什么是明文 “明文”是可以是文本,音乐,可以编码成mp3文件.明文可以是图像的,可以编码为gif.png或jpg文件.明文是电影的,可以编码成wmv文件.不一而足. 什么是编码?把明文变成计算机语言 ...
- Python字符编码补充
字符编码: Python字符编码贯穿Python学习的始终,现在应用的是Python2中字符编码的问题是很多的. 这次是要彻底解决Python字符编码的问题!!! 1 字符编码的发展过程: 1 .AS ...
- 转1:Python字符编码详解
Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...
- 转2:Python字符编码详解
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...
随机推荐
- linux php 安装xdebug
我的环境是PHP 5.2.5,下载的xdebug是Xdebug v2.2.1 源码包 PHP 5.3.20用的是Xdebug v2.1.0 {版本一定要匹配} 下载地址为:http://xdebug ...
- mac-profile
Mac 中定义与Linux一样的profile.d 首先Mac是没有profile.d的 在/etc/profile文件中添加 for sh in /etc/profile.d/*sh; do [ - ...
- Entity Framewrok 7beta7中不同版本sql server自动生成分页sql语句的问题
在EF中,使用linq进行分页是很方便的,假如我们有一个EMP表,结构如下: public class Emp { [Key] public Guid No { get; set; } public ...
- Json数组对象和对象数组
Json的简单介绍 从结构上看,所有的数据最终都可以分成三种类型: 第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词. 第二种 ...
- P1736 创意吃鱼法80
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- Unity3D C# 学习List数据类型的使用
List<T>类是ArrayList 类的泛型等效类. 该类使用大小可按需动态增加的数组实现 泛型的好处: 它为使用 c#语言编写面向对象程序增加了极大的效力和灵活性.不会强行对值类型进行 ...
- JQuery notepad
ready:在文档加载后执行,在文档对象加载完毕后,页面完全显示后执行,把所有事件函数放在ready中加载是一种非常好的方法,ready() 函数不应与 <body onload="& ...
- 超链接显示网站 A,访问后进入网站 B
#前端黑魔法# 出一个思考题:如何用最少的字符实现下图效果.即超链接显示网站 A,访问后进入网站 B. 当然这个是上古时代的黑魔法了,稍懂前端的都知道原理.所以这里只问最短的实现~ 一个简单的演示:( ...
- Struts2笔记1
一.简介 1.作用于web层:Struts2是一种基于MVC模式的轻量级Web框架; 2.各文件夹简介: apps:该文件夹存用于存放官方提供的Struts2示例程序,这些程序可以作为学习者 ...
- Tomcat8
一.Apache Tomcat 8介绍 Tomcat 8.0.0-RC3 (alpha) Released ...