Python的編碼問題

Unicodepython

  什麼是Unicode:Unicode 是計算機能夠支持這個星球上多種語言的祕密武器。Unicode使用一個或多個字節來表示一個字符。編碼

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128) 問題的解決方法及原理:spa

  該問題是在python2中將中文進行編碼時報的錯,意思是ASCII編碼的最大長度爲128,對中文進行解碼時超出了這個範圍。由於程序要對中文進行編碼時首先要將中文解碼成Unicode(系統默認設置是ASCII)。code

  解決方法:blog

  1、在腳本前面設置文件的默認編碼方式爲utf8utf-8

1 # -*- coding: utf-8 -*-
2 #!/usr/bin/env python
3 import sys
4 reload(sys)                     # 從新導入
5 sys.setdefaultencoding('utf8')  # 設置默認編碼方式爲utf8

  

  2、在對中文進行編碼前向解碼爲utf8 格式    ci

1 # 報錯的代碼
2 str = "中文字符串"
3 str_out = str.encode('utf8')
1 # 正常的代碼
2 str = "中文字符串"
3 str = str.decode('utf8')
4 str_out = str.encode('utf8')

 

  3、在定義中文字符串以前先指定字符串的格式,好比:字符串

1 # 定義時指定字符串編碼格式
2 str = u"中文字符串"
3 str_out = str.encode('utf8')
相關文章
相關標籤/搜索