GAE Python - CSV Writer提供ascii编解码器错误

时间:2013-03-12 23:07:14

标签: python google-app-engine csv codec

我有一个Google App Engine应用程序,可以使用多种语言存储数据,例如:德语和俄语。为此,我需要将字符串存储为UTF-8,幸运的是,因为我使用了webapp2.request处理程序,所以很快就完成了。作为一名初学程序员,这使我能够避免编码和解码数据的复杂性。

但是现在我正在尝试将内容写入CSV文件,似乎对于csv.writer命令,无论如何编码都是必要的。现在我不确定我是否应该进行解码或编码,但目前我得到的错误如下:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-9: ordinal not in range(128)

我使用的代码是:

import csv, webapp2, codecs

class AdminShopExport(webapp2.RequestHandler):
  def get(self):
    shops = Shop.all()
    shops.order('name')
    self.response.headers['Content-Type'] = 'application/csv'
    writer = csv.writer(self.response.out)
    writer.writerow(["id", "name", "domain", "category"])
    for shop in shops:
      writer.writerow([shop.keyname, shop.name, shop.url, shop.category])

关于内容,错误目前来自俄语给出的类别。但是如上所述,这些字段中的任何一个都可以包含UTF-8字符。处理这个问题的最佳方法是什么?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

python 2x csv不支持unicode

试试这个

https://github.com/jdunck/python-unicodecsv