編碼與解碼python
1、# -*- coding: utf-8 -*-編碼
關於Python文件開頭的"編碼指示",也就是 # -*- coding: -*- 這個語句。Python 默認腳本文件都是 UTF-8 編碼的,當文件中有非 UTF-8 編碼範圍內的字符的時候就要使用"編碼指示"來修正。spa
#! /usr/bin/env python # -*- coding: utf-8 -*- str1 = "我是中國人" print "str1==>", str1
2、sys.defaultencoding.net
關於 sys.defaultencoding,這個在解碼沒有明確指明解碼方式的時候使用。code
示例以下:注意這裏的 str1 是 str 類型的,而不是 unicode。blog
#! /usr/bin/env python # -*- coding: utf-8 -*- str1 = "我是中國人" print "str1==>", str1 str2 = str1.encode('gb2312') # 程序執行到這一步會報錯,解決方法有下面兩種
str1.encode('gb2312') 這句代碼將 str1 從新編碼爲 gb2312 的格式,即進行 unicode -> str 的轉換。由於 str1 自己就是 str 類型的,所以 Python 會自動的先將 str1 解碼爲 unicode ,而後再編碼成 gb2312。由於解碼是python自動進行的,咱們沒有指明解碼方式,python 就會使用 sys.defaultencoding 指明的方式來解碼。不少狀況下 sys.defaultencoding 是 ANSCII,若是 str1 不是這個類型就會出錯。拿上面的狀況來講,個人 sys.defaultencoding 是 anscii,而 str1 的編碼方式和文件的編碼方式一致,是 utf8 的,因此出錯了。對於這種狀況,咱們有兩種方法來改正錯誤。utf-8
#! /usr/bin/env python # -*- coding: utf-8 -*- str1 = "我是中國人" print "str1==>", str1 str2 = str1.decode('utf-8').encode('gb2312') # 方法1:手動解碼再編碼
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys # Python2.5 初始化後會刪除 sys.setdefaultencoding 這個方法,咱們須要從新載入 if sys.version_info[0] == 3: from importlib import reload reload(sys) if sys.version_info[0] == 2: reload(sys) sys.setdefaultencoding('utf-8') str1 = "我是中國人" print "str1==>", str1 str2 = str1.encode('gb2312') # 方法2:設置自動解碼的方式,再編碼,
http://www.javashuo.com/article/p-xygluhni-ee.htmlci
https://blog.csdn.net/u012735708/article/details/79086628unicode