加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 从未知字符编码的字符串转储JSON

发布时间:2020-12-20 13:32:45 所属栏目:Python 来源:网络整理
导读:我正在尝试将 HTML从网站转储到 JSON,我需要一种方法来处理不同的字符编码. 我读过如果它不是utf-8,它可能是ISO-8859-1,所以我现在正在做的是: for possible_encoding in ["utf-8","ISO-8859-1"]: try: # post_dict contains,among other things,website ht
我正在尝试将 HTML从网站转储到 JSON,我需要一种方法来处理不同的字符编码.

我读过如果它不是utf-8,它可能是ISO-8859-1,所以我现在正在做的是:

for possible_encoding in ["utf-8","ISO-8859-1"]:
   try:
      # post_dict contains,among other things,website html retrieved
      # with urllib2
      json = simplejson.dumps(post_dict,encoding=possible_encoding)
      break
   except UnicodeDecodeError:
      pass
if json is None:
      raise UnicodeDecodeError

如果我遇到任何其他编码,这当然会失败,所以我想知道在一般情况下是否有办法解决这个问题.

我之所以尝试序列化HTML的原因是因为我需要在POST请求中将它发送到我们的NodeJS服务器.所以,如果有人有一个不同的解决方案允许我这样做(可能根本没有序列化到JSON),我也很高兴听到这个.

解决方法

无论用于发送POST请求的媒体类型如何,您都应该知道字符编码(除非您想发送二进制blob).要获取html内容的字符编码,请参阅
A good way to get the charset/encoding of an HTTP response in Python
.

要将post_dict作为json发送,请确保其中的所有字符串都是Unicode(只要您收到它就将html转换为Unicode)并且不要将编码参数用于json.dumps()调用.如果不同的网站(您获取html字符串的地方)使用不同的编码,该参数将无法帮助您.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读