1

我正在使用适用于 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()... 有没有办法解决这个问题?

4

3 回答 3

2

@Areke Ignacio 的答案是解决方法。这里有一个简短的演练是我最近写的一篇文章“Python and Unicode Punjabi” https://www.pippallabs.com/blog/python-and-unicode-panjabi

于 2012-07-23T04:50:13.640 回答
0

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

myzip.writestr("udacity_code", code)

myzip.writestr("udacity_code", code.encode('utf-8'))
于 2016-01-20T13:31:23.030 回答
-1

从这个链接:

Python UnicodeDecodeError:“ascii”编解码器无法解码字节 0xe2 序数不在范围内(128)

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

于 2012-07-23T04:28:58.483 回答