python字符编码
Posted 灬鬼谷灬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python字符编码相关的知识,希望对你有一定的参考价值。
Table of Contents
1 字符编码
ascii 码是一个字节,通常只能显示英文字母和数字。 unicode码为了显示多种语言产生,但是要占用两个字节,显示文字要占用大量空间 utf-8 为了节约空间而生,英文字符只用一个字节存储,中文字符需要三个字节
character | ascii | unicode | utf-8 |
---|---|---|---|
A | 010000001 | 00000000 01000001 | 0100000001 |
中 | x | 01001110 00101101 | 11100100 10111000 10101101 |
- 计算机内存中,统一使用unicode 编码,当保存到硬盘或者需要传输的时候,就转成UTF-8.
- 浏览网页时,服务器会动态生成的 unicode 内容转换为UTF-8,再传输到浏览器,所以有时候用框架传递中文字符时,需要手动地把utf-8转换为unicode码。
2 python字符串
- python的源码文件一般是UTF-8模式编码的
- 所以python源码中的字符都要当作UTF-8来看待
- so, str.decode('utf-8')实际上是解码为unicode编码方式,可以把unicode当作所有字符转换的中间量,encode时,一般要转换为unicode格式.
>>> u"空间" u'\\u7a7a\\u95f4' >>> "空间" '\\xe7\\xa9\\xba\\xe9\\x97\\xb4' >>> "空间".decode('utf-8') u'\\u7a7a\\u95f4' >>> print "空间".decode('utf-8').encode('gb2312') \\227ռ\\344 >>> print "空间".encode('gb2312') Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128) >>>
3 python格式化
- python的格式化是一个很强大的功能 类似与C 语言的格式化输入、输出,比如:
- "hello, %s , number:%d" % ('tom', 10)
- u"hello, %s" % u"tome"
以上是关于python字符编码的主要内容,如果未能解决你的问题,请参考以下文章
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
Python2/3的中英文字符编码与解码输出: UnicodeDecodeError: 'ascii' codec can't decode/encode