2013-08-04 36 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()然后操纵这一点。但这是一个棘手的问题,取决于您的操作系统。

相关问题