2013-08-04 22 views
0

假設,如果我有一個內含一些Unicode字符的字符串,而我們需要做的操作就可以了,這將是這樣做的最好方法是什麼?Python字符串使用Unicode選擇採用,UnicodeDecodeError錯誤

s = u"blah ascii_word etc شاهد word1 word 2" # Delimited by spaces 

words = s.split(u' ') 

>>> UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in 
    position 91: ordinal not in range(128) 

任何線索?

而且,如果我想這個代碼寫入到一個文本文件,稍後再回來讀它,會是什麼程序?

回答

1

當你以Python的方式聲明變量時,假設它是在你的默認系統編碼中,你必須在字符串之前添加u使之成爲unicode,並在文件頂部添加編碼聲明,如果你這樣做了, 「獲得任何錯誤:

# -*- coding: utf-8 -*- 
s = u"blah ascii_word etc شاهد word1 word 2" 
words = s.split(u' ') 
print words 
# no error even tough my default system's encoding is ascii 

我現在已經覈實這一點,你甚至不需要在U - 加編碼就足以解決問題。

如果你想要做的unicode字符串的東西,你必須檢查你的系統編碼並在必要時改變它termainal:

>>> import sys 
>>> sys.getdefaultencoding() 
'ascii' #I have ascii 

您可以通過使用sys.setdefaultencoding()然後操縱這一點。但這是一個棘手的問題,取決於您的操作系統。