Python 3.x Python3:一个会导致UnicodeEncodeError的示例字符串
我正在尝试查找一个字符串,该字符串将引发Python 3.x Python3:一个会导致UnicodeEncodeError的示例字符串,python-3.x,unicode,Python 3.x,Unicode,我正在尝试查找一个字符串,该字符串将引发UnicodeEncodeError: dirty_str = 'FC Bayern München' # or anything else possible dirty_str.encode('utf-8') 无论我对输入做了什么,它都不会引发异常:有什么想法为什么会发生这种情况吗?(D800-DBFF和DC00-DFFF)在编码时会引发: >>> '\ud83d\udca9'.encode() Traceback (most r
UnicodeEncodeError
:
dirty_str = 'FC Bayern München' # or anything else possible
dirty_str.encode('utf-8')
无论我对输入做了什么,它都不会引发异常:有什么想法为什么会发生这种情况吗?(D800-DBFF和DC00-DFFF)在编码时会引发:
>>> '\ud83d\udca9'.encode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 0-1: surrogates not allowed
>'\ud83d\udca9'.encode()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
UnicodeEncodeError:“utf-8”编解码器无法对位置0-1中的字符进行编码:不允许使用代理
但是,由于您是从
input()
获取字符串,因此没有可以输入的UTF-8字符串可以解码到这些代码点。(不过,在Linux系统上,Python将使用这些来表示路径和文件名中的无效UTF-8字节。)您的输入是Unicode字符串。每个Unicode字符串都可以用UTF-8编码。我不知道为什么这会令人惊讶。你为什么期望有例外?另外,您是否尝试过改变编码:例如,将'utf-8'
替换为'ascii'
,然后输入包含非ascii字符的字符串?@MarkDickinson您是对的,我编辑了我的问题。感谢您的评论:)但是'\ud83d\udca9'。encode()
向我返回'\\ud83d\\udca9'
。你是对的,忘掉input()
,那是一个错误的例子。有趣。sys.version
和sys.maxunicode
的值是什么?另外,sys.getdefaultencoding()
的输出是什么?它们是:'3.6.5(默认值,2018年4月30日,13:54:44)\n[GCC 7.3.0]
,1114111
,'utf-8'
@chefarov可能返回的内容不是bytestring。你确定它给了你'\\ud83d\\udca9'
。