2015-10-27 56 views
0

我正在使用reddit-flair-bot作爲我的subreddit。嘗試在PRAW中處理空白字符文本時出現Unicode錯誤

如果你不熟悉這個,這是一個Python腳本,處理來自用戶輸入的項目經理,在那裏它採用主題的風格類和PM作爲風騷文本內容

這只是有點背景的,但這裏的重要組成部分 - 默認情況下,你不能在Reddit上發送一個空白點。這意味着用戶在發送PM時必須有文本(這意味着他們的名字旁邊也必須有文本)。

我們最近發現瞭解決此問題的一種解決方法,您可以在其中插入空白字符,並將其標識爲字符(以便PM將發送),但它將顯示爲您的姓名旁邊的任何內容。我說的是實際的空白字符而不是空白字段(alt+0143alt+0173符合此標準)。

問題是機器人使用PRAW,並且PRAW似乎無法檢測到空白Unicode字符。所以腳本無法正常運行。

它配備了錯誤:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 19-20: ordinal not in range(128) 

有什麼辦法來解決此問題?我希望我已經清楚地解釋了我的情況。

+0

當包含Python錯誤消息時,顯示整個調用堆棧通常很有用。這使得更容易知道錯誤來自何處。 –

+0

@MarkRansom類似[this?](https://i.imgur.com/24MGL08.png) – antonlab

+0

確切的說,如果你直接複製/粘貼到問題中會更好。它表明錯誤發生在'logfile.write'中,它告訴我這是一個沒有指定編碼的文本模式文件。 –

回答

0

ALT + 0143是U '\ u008f'

ALT + 0143是U '\ u00ad' #軟連字符

使用上述Unicode代碼點來表示的字符在你的代碼,然後對其進行編碼在發送之前使用'utf-8'。

>>> aa = u'\u008f' 
>>> aa_str = aa.encode('utf-8') 
>>> aa_str 
'\xc2\x8f' 

現在使用aa_str進行傳輸。