【问题标题】:Anyone know how to fix a unicode error?有人知道如何修复 unicode 错误吗?
【发布时间】:2012-07-23 04:24:49
【问题描述】:

我正在使用适用于 Python 的 Google App Engine,但我收到一个 unicode 错误,有没有办法解决它? 这是我的代码:

def get(self):
    contents = db.GqlQuery("SELECT * FROM Content ORDER BY created DESC")
    output = StringIO.StringIO()
    with zipfile.ZipFile(output, 'w') as myzip:
        for content in contents:
            if content.code:
                code=content.code
            else:
                code=content.code2
            myzip.writestr("udacity_code", code)

    self.response.headers["Content-Type"] = "application/zip"
    self.response.headers['Content-Disposition'] = "attachment; filename=test.zip"
    self.response.out.write(output.getvalue())

我现在收到一个 unicode 错误:

UnicodeDecodeError:“ascii”编解码器无法解码位置 12 中的字节 0xf7:序数不在范围内 (128)

我相信它来自 output.getvalue()... 有没有办法解决这个问题?

【问题讨论】:

  • 如果您包含完整的堆栈跟踪,我们将不必猜测错误发生的位置 - 堆栈跟踪会告诉您。

标签: python google-app-engine unicode


【解决方案1】:

@Areke Ignacio 的答案是解决方法。对于一个简短的演练,这是我最近写的一篇文章“Python 和 Unicode 旁遮普语”https://www.pippallabs.com/blog/python-and-unicode-panjabi

【讨论】:

  • 伊格纳西奥的答案在哪里?我错过了什么?
  • 可能被他删除了。这个答案是几年前的。但是,博客链接应该详细回答您的任何疑问。
【解决方案2】:

我遇到了完全相同的问题。 最后我通过改变对 writestr 的调用来解决它

myzip.writestr("udacity_code", code)

myzip.writestr("udacity_code", code.encode('utf-8'))

【讨论】:

    【解决方案3】:

    从此链接:

    Python UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 ordinal not in range(128)

    但与此同时,您的问题是您的模板是 ASCII 但您的数据不是(无法判断它是 utf-8 还是 unicode)。简单的 解决方案是在每个模板字符串前面加上 u 以使其成为 Unicode。

    【讨论】:

    • 抱歉,我是新手……我该怎么做?
    猜你喜欢
    • 2022-10-06
    • 2022-06-29
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2019-05-24
    • 2021-06-19
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多