1

Google App Engine for Python を使用していますが、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

From this link:

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

However in the meantime your problem is that your templates are ASCII but your data is not (can't tell if it's utf-8 or unicode). Easy solution is to prefix each template string with u to make it Unicode.

于 2012-07-23T04:28:58.483 に答える