2013-12-15 193 views
1

我收到以下错误,而试图寻找下面的字符串时,编码错误蟒蛇搜索字符串

错误:

SyntaxError: Non-ASCII character '\xd8' in file Hadith_scraper.py on line 44, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 

STRING:

دَّثَنَا عَبْدَانُ، قَالَ أَخْبَرَنَا عَبْ 

CODE:

arabic_hadith = "دَّثَنَا عَبْدَانُ، قَالَ أَخْبَرَنَا عَبْ" 
arabic_hadith.encode('utf8') 
print arabic_hadith 
if "الجمعة" in arabic_hadith:‎ 
    day = "5" 
else: 
    day = "" 

回答

4

您有字节字符串,而不是unicode的值。尝试在Python 2中对字节字符串进行编码意味着Python将首先尝试将其解码到unicode,以便它可以进行编码。

使用unicode值,而不是在这里,并确保你在文件的顶部先设定编解码器。请参阅PEP 263 - Defining Python Source Code Encodings(您的错误消息指出您)。

请注意,有无需编码为UTF8这里,那将只是文本比较复杂:

# encoding: utf8 
arabic_hadith = u"دَّثَنَا عَبْدَانُ، قَالَ أَخْبَرَنَا عَبْ" 
print arabic_hadith 
if u"الجمعة" in arabic_hadith:‎ 
    day = "5" 
else: 
    day = "" 

经验法则:从传入源解码字节(文件,网络数据)转换为Unicode ,在程序中仅处理Unicode,并且只对任何传出数据再次进行编码。

我强烈推荐您阅读:

,然后再继续。

+0

我总是有Unicode的问题...... :(我试过这个,它失败了,同样的错误:( – thefourtheye

+1

@thefourtheye:然后阅读链接太;;) –

+0

如果arabic_hadith是一个变量呢?不解决这个问题:arabic_hadith = U(arabic_hadith) – Ossama