0

我正在做的是:

  • 通过javascript,读取网页的DOM
  • 转换为 json 字符串
  • 作为ajax发送到python
  • 在 Python 中,json 将字符串解码为对象

我想要的是作为 json 一部分的任何文本都是 unicode 以避免任何字符问题。我曾经为此使用beautifulsoup:

from bs4 import * 
from bs4.dammit import UnicodeDammit
text_unicode = UnicodeDammit(text, [None, None], "html", True).unicode_markup

但这不适用于 json 字符串。当我尝试对其进行 json 解码时,通过 UnicodeDammit 运行字符串会导致错误。

问题是,我什至不确定收集 DOM 不会自动处理这个问题。

因此,对于初学者,我想要一系列测试网页来测试这一点。其中一个是用 utf-8 编码的,另一个是用其他东西编码的,等等。如果你认为它是 utf-8 但它不是,那么它使用的字符看起来会出错。请注意,我什至不考虑网页的规定编码。这常常是错误的。

4

1 回答 1

0

您正在尝试解决一个不存在的问题。

浏览器负责检测和处理网页编码。它将根据服务器标头、HTML 页面中的元标记以及必要时的简单猜测来确定正确的编码。DOM 为您提供 Unicode 数据。

JSON 处理 Unicode 数据;将 JSON 数据发送到您的 Python 进程会发送适当编码的字节数据,任何体面的 JSON 库都会为您转回 Unicode 值。Pythonjson模块就是这样一个库。

只需按原样json.load()使用orjson.loads()函数从您的 JavaScript 脚本中加载数据。您的浏览器已经使用了正确的编码(很可能是 UTF-8),并且 Python模块将解码任何使用的标准编码,而无需额外的配置或处理。json

于 2013-06-14T11:28:28.147 回答