尝试在PRAW中处理空白字符文本时出现Unicode错误

时间:2015-10-27 02:00:55

标签: python unicode reddit praw

我使用reddit-flair-bot作为我的subreddit。

如果你不熟悉这个,它是一个处理来自用户的传入PM的python脚本,它将主题作为天赋类和内容的PM作为天赋文本。

这只是一些背景,但这里是重要的部分 - 默认情况下,你不能在reddit上发送空白PM。这意味着用户在发送PM时必须有文本(这意味着他们的名字旁边也必须有文字)。

我们最近找到了解决此问题的方法,您可以在其中插入一个空白字符,它将被识别为一个字符(因此PM将发送)但它将显示为您的旁边没有任何内容名称。我说的是一个实际的空白字符而不是空格(alt+0143alt+0173符合此标准。)

问题是机器人使用PRAW,而PRAW似乎无法检测到空白的unicode字符。因此脚本无法正常运行。

它附带错误:

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

有什么方法可以解决这个问题吗?我希望我已经清楚地解释了我的情况。

1 个答案:

答案 0 :(得分:0)

ALT + 0143是你'\ u008f'

ALT + 0143是你'u uad'#soft hypen

使用上面的unicode代码点来表示代码中的字符,然后在发送之前使用'utf-8'对它们进行编码。

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

现在使用aa_str进行传输。