【Python】Python中字符串的编码分析
来源:互联网 发布:网络语言大大什么意思 编辑:程序博客网 时间:2024/06/13 06:10
前言
现在Python环境可以分为2和3。Python 2.x的开发环境默认编码是ascii,Python 3.x是Unicode。下面就这个编码问题简单讨论一下。
Python 3.x的编码
Python 3.x默认编码是Unicode,也就是说,Python 3.x的字符串是Unicode编码方式,控制台也是。
测试代码
# Python Version:3.5.1import sysb_str = b"abcd 1234"u_str = "abcd 1234 中文"u_str_a = "abcd 1234".encode('ascii')u_str_e = "abcd 1234 中文".encode('utf-8')u_str_gbk = "abcd 1234 中文".encode('gbk')if __name__ == '__main__': print(sys.getdefaultencoding()) print(b_str) print(u_str) print(u_str_a) print(u_str_e) print(u_str_gbk)
打印如下
utf-8
b’abcd 1234’
abcd 1234 中文
b’abcd 1234’
b’abcd 1234 \xe4\xb8\xad\xe6\x96\x87’
b’abcd 1234 \xd6\xd0\xce\xc4’
- 第一行是打印系统默认的编码,这里是utf-8
b_str
的字符串前面加了一个b
,表示以Ascii方式存储,控制台输出的字符串前面也有一个b
,表示这是以Ascii输出;u_str
则是默认的字符串,是Unicode编码,控制台输出正常的字符串;u_str_a
是从Unicode转码Ascii;u_str_e
是从Unicode转码utf-8,实际上,utf-8是Unicode的一种实现方式;u_str_gbk
是从Unicode转码GBK,对照u_str_e
的输出可见,其中文输出的编码与之不同。
Python 2.x的编码
Python 2.x的默认编码是ascii,控制台暂时不知道是Unicode编码还是utf-8编码。
测试代码
# coding=utf-8import sysb_str = b"abcd 1234"u_str = u"abcd 1234 中文"u_str_a = u"abcd 1234".encode('ascii')a_str_u = "abcd 1234".encode('utf-8')u_str_gbk = u"abcd 1234 中文".encode('gbk')if __name__ == '__main__': print(sys.getdefaultencoding()) print(b_str) print(u_str) print(u_str_a) print(a_str_u) print(u_str_gbk.decode('gbk'))
打印内容如下:
ascii
abcd 1234
abcd 1234 中文
abcd 1234
abcd 1234
abcd 1234 中文
其测试代码类似于Python 3.x的测试代码。
- 第一行打印系统默认的编码方式:ascii
- b_str
是测试ascii字符串,其在控制台正常输出,没有Python 3.x控制台下的b
;
- u_str
是以Unicode方式编码的字符串,正常输出;
- u_str_a
是Unicode转码成Ascii,然后输出;
- a_str_u
是Ascii转码Unicode,然后输出
- u_str_gbk
是Unicode转码成GBK,打印的时候需要GBK解码,才能在控制台正常输出。
小技巧
- 在Python开发中,给字符串前面添加一个
b
,表示该字符串以Ascii方式编码,添加一个u
,表示以Unicode方式编码,这种方式与文件的编码无关。
0 0
- 【Python】Python中字符串的编码分析
- Python的字符串编码规则
- python的字符串、编码问题
- Python字符串的编码问题
- python的字符串和编码
- Python的字符串和编码
- python的字符串和编码
- Python 字符串编码中中文字符注意事项
- python中字符串:声明、编码、函数、格式化
- Python 中编码的问题
- Python字符串编码
- python字符串编码常见问题
- python字符串编码问题
- python处理字符串编码
- Python 中的字符串编码
- Python 中的字符串编码
- python字符串编码常见问题
- python字符串编码
- 微信开通状态检测助手如何进行批量加粉
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
- 其实你不知道MultiDex到底有多坑
- css5_浮动
- LeakCanary开源项目 内存泄漏检测工具 库 使用
- 【Python】Python中字符串的编码分析
- getCurrentSession 与 openSession() 的区别
- layui 表单验证案例
- 面向对象设计原则 面向对象设计原则之里氏代换原则
- Spring Test 整合 JUnit 4 使用总结
- ubuntu中解决android studio 不能输入中文
- redis-cli 使用密码登录
- 算法-第四版-练习1.3.31解答
- 解决OS X移动硬盘中文件呈灰白色且无法读取的问题