Python json.dumps 包含一些 UTF-8 字符的元组,要么失败,要么转换它们。我希望按原样保留编码字符

问题描述 投票:0回答:1

在我的服务器上,Python 脚本以元组形式从数据库获取数据。然后,脚本将元组转换为字符串(使用 json.dumps()),以传递到用户浏览器中的 JavaScript 脚本。

数据包括德国名字,例如Weidmüller。当 Python 脚本获取该数据时,它会将其返回为 Weidm\xfcller,其中 \xfc 是 ü 的 UTF-8 编码。到目前为止一切顺利。

但是,

  • json.dumps(tableData,ensure_ascii=False) 将 \xfc 转换为 �
  • json.dumps(tableData,ensure_ascii=True) 失败:“UnicodeDecodeError: 'utf8' 编解码器无法解码位置 5 中的字节 0xfc:无效的起始字节”

我真正想要的是 json.dumps 保留 UTF-8 编码字符;按原样传递 \xfc 。这样用户浏览器中的 JavaScript 脚本就可以进行解码。 这可能吗?

或者,我是否错误地处理了这个问题?

python json utf-8
1个回答
1
投票

\xfc
不是 ü 的 UTF-8 编码,而是 latin-1 编码。

>>> 'ü'.encode('latin')
b'\xfc'
>>> 'ü'.encode('utf-8')
b'\xc3\xbc'

如果您

json.dump
文本,您不应该得到这样的替换字符:

>>> json.dumps({"k": "Weidmüller"})
'{"k": "Weidm\\u00fcller"}'
>>> json.dumps({"k": "Weidmüller"}, ensure_ascii=False)
'{"k": "Weidmüller"}'

首先检查以确保您从数据库中获取的内容是正确解码的文本。

© www.soinside.com 2019 - 2024. All rights reserved.