python-3.x - 从python 3中字节的字符串表示中检索字节
问题描述
以下代码片段在输出正确的 UTF8 字符表示方面非常有效:
a = b"Tenemos la Soluci\xc3\xb3n"
a.decode('utf8')
'Tenemos la Solución' # correct output
但在我的用例中,实际字节作为字符串存储在数据库中。在那种情况下,我如何使用正确的 UTF8 表示检索输出?
a = "Tenemos la Soluci\xc3\xb3n" # retrieved from Database
b = bytes(a, 'utf8')
b.decode('utf8')
'Tenemos la Solución' # incorrect output
请建议如何解决这个问题。
解决方案
您所拥有的是mojibake,例如,当 UTF-8 编码的文本存储在为 ISO-8859-1 或类似编码配置的数据库中时,就会发生这种情况。 latin1
是 Unicode 码点到等效字节的 1:1 映射,假设 Unicode 字符串仅包含 U+0000 到 U+00FF,并且可以用来反转问题:
>>> a = "Tenemos la Soluci\xc3\xb3n" # retrieved from Database
>>> a.encode('latin1').decode('utf8')
'Tenemos la Solución'
推荐阅读
- python - Python 数据类 AttributeError
- sql - 为什么这个语句在 ORACLE 中不起作用?
- r - 使用 ggplot2 函数的混合效应模型残差图
- xslt-1.0 - 如何将 xsl:value-of 结果嵌入到 CDATA 块中?
- xamarin - Xamarin Shell - 硬件后退按钮
- javascript - 我想替换没有黄色铅笔的图标按钮
- java - 如何结合 Spring REST 和 WebSocket?
- sql-server - 从 SQL Server 进行 API 调用时获得空白响应
- javascript - 从按钮 Google 表格重新加载部署的 html 页面
- javascript - Preact 构建模板执行失败:错误:找不到 XMLHttpRequest 兼容库