python字符编码

Posted 灬鬼谷灬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python字符编码相关的知识,希望对你有一定的参考价值。

Table of Contents

1 字符编码

ascii 码是一个字节,通常只能显示英文字母和数字。 unicode码为了显示多种语言产生,但是要占用两个字节,显示文字要占用大量空间 utf-8 为了节约空间而生,英文字符只用一个字节存储,中文字符需要三个字节

character ascii unicode utf-8
A01000000100000000 010000010100000001
x01001110 0010110111100100 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下载及介绍

字符编码,时间格式转换

Python | 多种编码文件(中文)乱码问题解决

python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)

python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)

Python2/3的中英文字符编码与解码输出: UnicodeDecodeError: 'ascii' codec can't decode/encode