python 编码方式总结
(python内部使用unicode编码):
>>> t='北京'
>>> t
'\xe5\x8c\x97\xe4\xba\xac'
1)urllib.quote(t) 将t转换为16进制编码
'%E5%8C%97%E4%BA%AC'
urllib.unquote('%E5%8C%97%E4%BA%AC') 将16进制编码转换为内部编码
'\xe5\x8c\x97\xe4\xba\xac'
2)decode的作用是将其他编码的字符串转换成unicode编码
>>> s= t.decode('utf-8')
>>> s
u'\u5317\u4eac'
>>> w=t.encode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
>>> w=s.encode('utf-8')
>>> w
'\xe5\x8c\x97\xe4\xba\xac'
>>> q=s.encode('gb2312')
>>> q
'\xb1\xb1\xbe\xa9'
首先要搞清楚,字符串在Python内部的表示是unicode编码.
因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,
如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,
如str2.encode('gb2312'),表示将unicode编码的字符串转换成gb2312编码。
在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串的编码,而不是程序本身的问题。
如在UliPad中运行如下代码:
s=u"中文"
print s
会提示:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)。
这是因为UliPad在英文WindowsXP上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。
将最后一句改为:print s.encode('gb2312') 则能正确输出“中文”两个字。
若最后一句改为:print s.encode('utf8') 则输出:\xe4\xb8\xad\xe6\x96\x87,
这是控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。
另外,代码中字符串的默认编码与代码文件本身的编码一致,
如: s='中文' 如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。
通常,在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件,在这篇文章中可以看到如何获得系统的默认编码。
如果字符串是这样定义: s=u'中文' 则该字符串的编码就被指定为unicode了,即python的内部编码,和代码文件本身的编码无关。
因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可。
如果一个字符串已经是unicode了,再进行解码则将出错,
因此通常要对其编码方式是否为unicode进行判断:
python 编码方式总结相关推荐
- python 文件编码的识别_【python】python编码方式,chardet编码识别库
环境: python3.6 需求: 针对于打开一个文件,可以读取到文本的编码方式,根据默认的文件编码方式来获取文件,就不会出现乱码. 针对这种需求,python中有这个方式可以很好的解决: 解决策略: ...
- pep8 python 编码方式_PEP8 Python 编码规范整理
决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...
- python采用哪种编码方式_python有哪几种编码方式
python编码方式有:1.ASCII:2.GB2312:3.Unicode:4.UTF-8.ASCII编码的制定是为了显示现代美国英语.为了解决信息交流的要求,可以使用GB2312编码来进行汉语交流 ...
- python采用哪种编码方式_Python编码格式的指定方式
参考自: http://python.jobbole.com/85852/, 原文探究的更深,有兴趣的可以去看看. 简介来讲就是使用一种特殊的注释来声明编码格式,如何判断这种格式也用了很简单粗暴有效的 ...
- python3文件的编码类型是什么_python3.x - 怎么查看某个文件的编码方式?python
问 题 python的确很赞,但是编码这个问题真的太尿性了... 现在我有一个文件,不论他的编码方式是什么,我都想把它转化成utf-8的格式.我的想法是先读取文件内容,保存到data变量中去,然后再以 ...
- 【Python】python3编码方式encode介绍
上一篇文章介绍了计算机编码发展历史和编码方式,现在我们聚焦到python语言中,在最新的Python3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言.例如: prin ...
- Python 文件学习----*编码方式*----异常处理----json
目录 目录 文件的写入模式 文件的写入 文件的读取 read() :用于读取一个文件返回一个字符串 readline() :读取一行 返回一个字符串,并且把指针移动到下一行 readlines() : ...
- python中的编码方式
说明 这里我们以python2.7为例讲解python的编码方式 指定执行编码方式 python2.7的默认编码方式为ascii字符集,这里所说的编码方式指执行编码方式,在编程过程中,有三个地方都涉及 ...
- Python学习之——编码方式
1.各种编码方式 ASCII:http://zh.wikipedia.org/zh-hans/ASCIIUnicode:http://zh.wikipedia.org/zh-hans/UnicodeU ...
最新文章
- c#开发中程序集调用时容易忽略的问题
- 超级棒的170+款web前端开发工具汇总,千万要收藏好!
- 【算法】BitMap
- Spring-Cloud中的统一配置中心
- [转]Using The Entity Framework With WCF
- java node子节点_使用Java的XPath循环遍历节点并提取特定的子节点值
- php实用小技巧【持续更新】
- 不加群提取群成员深度体会,少走点儿弯路吧
- centos7 配置阿里yum源
- git代理设置与取消
- 测试场景设计-登录设计
- [乐意黎]Nginx 重写wordpress路径于二级子目录方法
- 山西工商学院计算机二级网址,2021年山西工商学院教务处登录入口
- Swi-Prolog借助XPCE可视化-显示图片
- Mosquitto 在Linux服务器上的部署过程中以及踩过的坑
- DICOM文件格式剖析(初识)
- 对偶理论和灵敏度分析---线性规划的对偶理论
- 外盘期货交易软件有哪些(十大正规外盘期货)
- Win11自带录屏功能怎么使用
- Android 源码梳理
热门文章
- 用java画爱心图_C++和Java命令行绘制心形图案
- requestmapping中path与value区别_1、Spring注解之@RequestMapping
- tomcat热部署 更改类文件不需要重起
- php rsa加密乱码_php RSA加解密
- 台积电CEO魏哲家:3nm工艺按计划推进 明年一季度将看到营收
- 三星Galaxy S21 FE证件照公布:120Hz高刷直屏+骁龙888处理器
- 消息称字节跳动正在开发一款类Clubhouse应用
- 张一鸣向盖茨基金会捐赠1000万美元 此前国内捐款1亿元用于抗疫
- 王思聪限制消费令被取消!
- 11月25日发!余承东官宣华为Mate新成员:最强悍高端平板?