2014-01-05 51 views
7

解碼我已經寫在python下面的代碼2.7如何編碼和西班牙在Python

# -*- coding: utf-8 -*-  
import sys 

_string = "años luz detrás" 
print _string.encode("utf-8") 

,這將引發以下錯誤:

print _string.encode("utf-8") 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128) 

任何幫助表示讚賞,謝謝提前

+0

你不需要使用編碼,只嘗試「打印_string」的 – Tisp

+0

可能重複[Python的 - 「ASCII」編解碼器不能解碼字節(http://stackoverflow.com/questions/9644099/python-ascii-編解碼器斜面解碼字節) –

回答

6

加入u之前"

>>> _string = u"años luz detrás" 
>>> print _string.encode("utf-8") 
años luz detrás 

這樣做。

3

在Python 2中,字符串文字""創建了一個字節串。然後你在一個字節串上調用.encode("utf-8"),Python在執行.encode("utf-8")之前首先嚐試使用默認字符編碼(ascii)將它解碼爲Unicode字符串。

u""創建Unicode字符串。它將修復UnicodeDecodeError爲@Bleeding Fingers suggested

# -*- coding: utf-8 -*-  
print u"años luz detrás" 

如果標準輸出重定向這可能導致UnicodeEncodeError。在這種情況下設置PYTHONIOENCODING環境變量。