gpt4 book ai didi

python - str.encode(编码 ='utf-8' ,错误 ='strict' )是否有可能引发 UnicodeError?

转载 作者:行者123 更新时间:2023-12-05 02:31:13 24 4
gpt4 key购买 nike

我正在编写一些需要同时使用 Py2.7 和 Py3.7+ 的代码。

我需要使用 UTF-8 编码将文本写入文件。我的代码如下所示:

import six
...
content = ...
if isinstance(content, six.string_types):
content = content.encode(encoding='utf-8', errors='strict')

# write 'content' to file

以上,content.encode() 是否可以从 Py2.7 或 Py3.7+ 引发 UnicodeError?我想不出这是可能的场景。我不是 Python 专家,所以我认为一定存在边缘情况。

以下是我认为它永远不会引发 UnicodeError 的原因:

  • six.string_types涵盖三种类型:Py2.7 str & unicode, Py3.7+ str
  • 所有这些类型都可以始终编码为 UTF-8。

最佳答案

是的,这是可能的:

import six

content = ''.join(map(chr, range(0x110000)))
if isinstance(content, six.string_types):
content = content.encode(encoding='utf-8', errors='strict')

结果(Try it online!,使用 Python 3.7.4):

Traceback (most recent call last):
File ".code.tio", line 5, in <module>
content = content.encode(encoding='utf-8', errors='strict')
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 55296-57343: surrogates not allowed

UnicodeEncodeErrorUnicodeError

关于python - str.encode(编码 ='utf-8' ,错误 ='strict' )是否有可能引发 UnicodeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71642549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com