python - Python:编解码器和 utf-8 全局错误处理
问题描述
我需要codecs
为第三方包设置全局错误处理。
在我的代码中,我可以执行以下操作:
import codecs
print(
codecs.encode('\ud83d', encoding='utf-8', errors='replace')
)
我想在全球范围内实现相同的行为。我正在尝试类似的东西:
def relaxedutf8(exc):
if not isinstance(exc, UnicodeDecodeError):
raise TypeError("don't know how to handle %r" % exc)
if exc.object[exc.start:exc.start+2] == "\xc0\x80":
return (u"\x00", exc.start+2) # retry after two bytes
else:
raise exc
codecs.register_error("test.relaxedutf8", relaxedutf8)
print(
codecs.encode('\ud83d', encoding='utf-8')
)
但它不起作用。错误是:
File "codecs_errros.py", line 18, in <module>
codecs.encode('\ud83d', encoding='utf-8')
UnicodeEncodeError: 'utf-8' codec can't encode character '\ud83d' in position 0: surrogates not allowed
解决方案
推荐阅读
- vue.js - VUE,在v-for循环中,如何在样式中绑定循环的各个url
- c# - 如何在 C# 中的 TextBox 中显示 ComboBox 选择?
- android - Firebase 依赖项因 Android Pie 和新的 androidx.* 包层次结构而失败
- python - 渲染灰度图像
- html - 时钟网格布局
- python - Pandas groupby 和 apply with unique 非常慢
- matrix - 如何在处理中的 applyMatrix 后找到新的 x,y,z?
- go - 将频道与 google pubsub poll 订阅者一起使用
- sql - SQL Server 触发器将更新的行复制到另一个历史表中
- r - R 从不允许相邻元素的向量中采样