(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 编码方式总结相关推荐

  1. python 文件编码的识别_【python】python编码方式,chardet编码识别库

    环境: python3.6 需求: 针对于打开一个文件,可以读取到文本的编码方式,根据默认的文件编码方式来获取文件,就不会出现乱码. 针对这种需求,python中有这个方式可以很好的解决: 解决策略: ...

  2. pep8 python 编码方式_PEP8 Python 编码规范整理

    决定开始Python之路了,利用业余时间,争取更深入学习Python.编程语言不是艺术,而是工作或者说是工具,所以整理并遵循一套编码规范是十分必要的.所以今天下午我根据PEP 8整理了一份,以后都照此 ...

  3. python采用哪种编码方式_python有哪几种编码方式

    python编码方式有:1.ASCII:2.GB2312:3.Unicode:4.UTF-8.ASCII编码的制定是为了显示现代美国英语.为了解决信息交流的要求,可以使用GB2312编码来进行汉语交流 ...

  4. python采用哪种编码方式_Python编码格式的指定方式

    参考自: http://python.jobbole.com/85852/, 原文探究的更深,有兴趣的可以去看看. 简介来讲就是使用一种特殊的注释来声明编码格式,如何判断这种格式也用了很简单粗暴有效的 ...

  5. python3文件的编码类型是什么_python3.x - 怎么查看某个文件的编码方式?python

    问 题 python的确很赞,但是编码这个问题真的太尿性了... 现在我有一个文件,不论他的编码方式是什么,我都想把它转化成utf-8的格式.我的想法是先读取文件内容,保存到data变量中去,然后再以 ...

  6. 【Python】python3编码方式encode介绍

    上一篇文章介绍了计算机编码发展历史和编码方式,现在我们聚焦到python语言中,在最新的Python3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言.例如: prin ...

  7. Python 文件学习----*编码方式*----异常处理----json

    目录 目录 文件的写入模式 文件的写入 文件的读取 read() :用于读取一个文件返回一个字符串 readline() :读取一行 返回一个字符串,并且把指针移动到下一行 readlines() : ...

  8. python中的编码方式

    说明 这里我们以python2.7为例讲解python的编码方式 指定执行编码方式 python2.7的默认编码方式为ascii字符集,这里所说的编码方式指执行编码方式,在编程过程中,有三个地方都涉及 ...

  9. Python学习之——编码方式

    1.各种编码方式 ASCII:http://zh.wikipedia.org/zh-hans/ASCIIUnicode:http://zh.wikipedia.org/zh-hans/UnicodeU ...

最新文章

  1. c#开发中程序集调用时容易忽略的问题
  2. 超级棒的170+款web前端开发工具汇总,千万要收藏好!
  3. 【算法】BitMap
  4. Spring-Cloud中的统一配置中心
  5. [转]Using The Entity Framework With WCF
  6. java node子节点_使用Java的XPath循环遍历节点并提取特定的子节点值
  7. php实用小技巧【持续更新】
  8. 不加群提取群成员深度体会,少走点儿弯路吧
  9. centos7 配置阿里yum源
  10. git代理设置与取消
  11. 测试场景设计-登录设计
  12. [乐意黎]Nginx 重写wordpress路径于二级子目录方法
  13. 山西工商学院计算机二级网址,2021年山西工商学院教务处登录入口
  14. Swi-Prolog借助XPCE可视化-显示图片
  15. Mosquitto 在Linux服务器上的部署过程中以及踩过的坑
  16. DICOM文件格式剖析(初识)
  17. 对偶理论和灵敏度分析---线性规划的对偶理论
  18. 外盘期货交易软件有哪些(十大正规外盘期货)
  19. Win11自带录屏功能怎么使用
  20. Android 源码梳理

热门文章

  1. 用java画爱心图_C++和Java命令行绘制心形图案
  2. requestmapping中path与value区别_1、Spring注解之@RequestMapping
  3. tomcat热部署 更改类文件不需要重起
  4. php rsa加密乱码_php RSA加解密
  5. 台积电CEO魏哲家:3nm工艺按计划推进 明年一季度将看到营收
  6. 三星Galaxy S21 FE证件照公布:120Hz高刷直屏+骁龙888处理器
  7. 消息称字节跳动正在开发一款类Clubhouse应用
  8. 张一鸣向盖茨基金会捐赠1000万美元 此前国内捐款1亿元用于抗疫
  9. 王思聪限制消费令被取消!
  10. 11月25日发!余承东官宣华为Mate新成员:最强悍高端平板?