Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试在PRAW中处理空白字符文本时出现Unicode错误_Python_Unicode_Reddit_Praw - Fatal编程技术网

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

Python 尝试在PRAW中处理空白字符文本时出现Unicode错误,python,unicode,reddit,praw,Python,Unicode,Reddit,Praw,我正在使用我的subreddit 如果您不熟悉这一点,那么它是一个python脚本,用于处理来自用户的传入PM,它将主题作为flair类,PM的内容作为flair文本 这只是一点背景,但这里有一个重要的部分-默认情况下,您不能在reddit上发送空白PM。这意味着用户在发送PM时必须有文本(这意味着他们的名字旁边也必须有文本) 我们最近找到了一个解决此问题的方法,您可以插入一个空白字符,它将被标识为一个字符(因此PM将发送),但它将在您的姓名旁边显示为空。我说的是一个实际的空白字符,而不是一个空

我正在使用我的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好主意!谢谢