Python 尝试在PRAW中处理空白字符文本时出现Unicode错误
我正在使用我的subreddit 如果您不熟悉这一点,那么它是一个python脚本,用于处理来自用户的传入PM,它将主题作为flair类,PM的内容作为flair文本 这只是一点背景,但这里有一个重要的部分-默认情况下,您不能在reddit上发送空白PM。这意味着用户在发送PM时必须有文本(这意味着他们的名字旁边也必须有文本) 我们最近找到了一个解决此问题的方法,您可以插入一个空白字符,它将被标识为一个字符(因此PM将发送),但它将在您的姓名旁边显示为空。我说的是一个实际的空白字符,而不是一个空格(Python 尝试在PRAW中处理空白字符文本时出现Unicode错误,python,unicode,reddit,praw,Python,Unicode,Reddit,Praw,我正在使用我的subreddit 如果您不熟悉这一点,那么它是一个python脚本,用于处理来自用户的传入PM,它将主题作为flair类,PM的内容作为flair文本 这只是一点背景,但这里有一个重要的部分-默认情况下,您不能在reddit上发送空白PM。这意味着用户在发送PM时必须有文本(这意味着他们的名字旁边也必须有文本) 我们最近找到了一个解决此问题的方法,您可以插入一个空白字符,它将被标识为一个字符(因此PM将发送),但它将在您的姓名旁边显示为空。我说的是一个实际的空白字符,而不是一个空
alt+0143
和alt+0173
满足这个标准)
问题是BOT使用PURAW,PARW不能检测空白Unicode字符。因此脚本无法正常运行
它伴随着一个错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 19-20: ordinal not in range(128)
有办法解决这个问题吗?我希望我已经清楚地解释了我的情况。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进行传输。当包含Python错误消息时,通常可以显示整个调用堆栈。这样可以更容易地判断错误来自何处。@markransem与之类似,不过如果您直接复制/粘贴到问题中会更好。它表示错误发生在
日志文件中。write
,它告诉我这是一个文本模式文件,您没有指定编码。不让用户发送空格来删除flair可能更容易,而让他们发送特定消息(例如clear flair
),仅仅是因为告诉某人如何进入空白区域是很困难的。@Pokechu22好主意!谢谢