python中的编码和解码
程序员文章站
2022-06-14 15:17:37
...
计算机中常见的编码方式有多种,英文一般是ascii编码,其他有unicode,utf-8,gbk,utf-16等编码。
常见编码方式:
- ASCII编码:ASCII是早期的编码,包含英文字母、数字和一些英文符号一共127个符号;
- Unicode编码:不同的语言有各自不同的编码方式,导致在多种语言环境下按照某一种固定的编解码方式会出现乱码。为了统一,制定了Unicode编码。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了,一般使用两个字节表示一个字符。现代的操作系统和大多数编程语言都支持Unicode;
- UTF-8编码:UTF-8是Unicode编码的一种存储和传输的方式。由于英文字符只需要占用一个字节的空间就够了,但如果统一采用Unicode的两个字节来表示,会浪费存储空间,增加传输消耗,UTF-8把Unicode编码转化成“可变长编码”,可以根据不同的符号变化字节的长度;
- GB2312编码:适用于汉字处理、汉字通信等系统之间的信息交换;
- GBK编码:是汉字编码标准之一,是在 GB2312-80 标准基础上的内码扩展规范,使用了双字节编码;
- 在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码,当文件被打开的时候,UTF-8字符被转换成Unicode字符到内存中,文件关闭的时候,再从Unicode转化成UTF-8保持到磁盘上,以节省(传输)空间。
python中的编码转化:
python内部的字符串一般是Unicode编码,Unicode是utf-8、gbk等编码的父编码,这些子编码方式之间不能直接转化,需要先转化成Unicode,再转化成其他编码方式,Unicode作为转换的中间码。python中的解码(decode)是从子编码转换成Unicode编码,编码(encode)是从Unicode转其他子编码。
查询字符串是否是Unicode编码:
isinstance(str,unicode)
查询系统默认编码:
import sys
print sys.getdefaultencoding()
编码转换:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
print sys.getdefaultencoding()
str = '中国'
str = str.decode('utf8')
print isinstance(str,unicode)
str = str.encode('gbk')
print isinstance(str,unicode)
下一篇: Oc 新闻接口请求数据UI布局