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'