【问题标题】:Encoding issue - 'ascii' codec can't decode byte 0xc3编码问题 - “ascii”编解码器无法解码字节 0xc3
【发布时间】:2017-11-05 22:28:15
【问题描述】:

我的 Python 代码存在编码问题。我尝试了不同的方法,但我没有得到它的工作。

值为ä

with open("result.txt", "a") as myfile:
    myfile.write(value.encode('utf-8'))

错误是: UnicodeDecodeError:“ascii”编解码器无法解码位置 0 的字节 0xc3:序数不在范围内(128)

【问题讨论】:

  • 如果您查看右侧,您会看到“相关”问题的列表。许多标题与您的问题非常相似。这些问题及其答案对您没有帮助吗?

标签: python python-unicode


【解决方案1】:

您可以尝试编解码器模块,它是专门为此设计的。 我也希望该值是 unicode 而不是字符串。如果是 unicode。

import codecs
value = u'ä'
with codecs.open("result.txt", "a", encoding="utf-8") as f:
    f.write(value)

应该这样做。

但是查看错误 unicode decode 似乎您的值是字符串。 如果它是一个字符串

f.write(value.decode("utf-8"))

永远记住unicode编码为字符串,字符串解码为unicode。 因此,在您的情况下,您在编写时对不正确的字符串进行编码。 但是python允许它。所以它尝试将字符串解码为 un​​icode 以便可以进一步编码。但它肯定会失败,因为 decode 默认使用 ASCII 编码,而 ä 不属于这种情况。

【讨论】:

  • 非常感谢。我从刮擦中获得“价值”。是否可以以某种方式执行 value=u 值?
  • 那么,你确定它是一个字符串??
  • 是的,它是一个字符串。我确定。
  • @Kristoffer 更新了答案供您参考。
  • @Kristoffer如果它回答了您的问题,请考虑接受并投票。
猜你喜欢
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 2011-06-29
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多