【问题标题】:how to ignore Non-UTF-8 code starting with '\xa0' error within my string in python [duplicate]如何在python中的字符串中忽略以'\ xa0'开头的非UTF-8代码错误[重复]
【发布时间】:2021-08-14 07:42:16
【问题描述】:

我在 python 中有一个字典列表,其中几乎所有我的字典对象至少有一个键,其字符串值包含非 UTF-8 字符。我想保持它们原样并将它们插入到我的数据库中,稍后使用 API 将其取回。

这是我的字典列表的样子

items=[
            {
                
                "name": "World Bank (USA)",
                "shortName": "WB",
                "description": "<p><strong>WB - World Bank</strong> - is an international financial institution that provides loans to developing countries for capital programs. The World Bank's official goal is the reduction of poverty.</p><p> </p><p> </p>",
               
                "legalResidence": "USA",
               
            },.....]

在描述键中,它的值是在字符串中包含 Html 标记,它会为我引发此错误

SyntaxError: Non-UTF-8 code starting with '\xa0' 

我怎样才能忽略这个错误并让我的字符串保持原样?

这个问题几乎没有答案,在所有这些问题中,他们删除或替换了我不想去的这些字符。 enter link description here

【问题讨论】:

  • “几乎我所有的 Dict 对象都至少有一个键,其字符串值包含非 UTF-8 字符” - 请解释一下。
  • 我的意思是,就像我列表中的第一个字典一样,其他 Dict 对象的字符串中也有某种类型的相同字符
  • UTF-8 是一种编码。当您尝试解码字节对象时引发了该错误。你在读文件吗?获取网页?遇到这个错误的代码是我们需要看到的。以及将向我们展示更多信息的回溯消息。您可以通过使用字节对象而不是字符串来“保留”奇数字符,但最好的办法可能是找出正确的编码并使用它而不是 UTF-8。
  • @tdelaney 找出正确的编码是我想要做的
  • 所以你不会告诉我们你在哪里得到这个错误?那么有点毫无意义的问题。

标签: python mysql unicode ascii non-ascii-characters


【解决方案1】:

这里的问题是你告诉 Python 你的源代码是 UTF-8(这是默认的),而实际上它不是 UTF-8。 0xA0 是默认 Windows-1252 字符集中的“不间断空格”。如果这是您获得这些字符串的地方,那么您可以尝试将此注释放在文件顶部:

# -*- coding: Windows-1252 -*-

看看这是否能让事情过去。处理此问题的正确方法是将这些不间断空格转换为常规空格,然后再将它们放入源代码。

【讨论】:

  • ...或者将它们转义为 \u00a0,如果您想将它们保留为不间断空格。
  • 如果是这种情况,使用其他坚持 ascii 或编写 utf-8 的编辑器可能是最好的选择。
猜你喜欢
  • 1970-01-01
  • 2017-04-29
  • 2014-05-30
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多