1

ドイツ語やロシア語など、さまざまな言語でデータを保存するGoogleAppEngineアプリがあります。そのためには、文字列を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文字を含めることができます。これを処理するための最良の方法は何でしょうか?ご協力いただきありがとうございます!

4

1 に答える 1

2

python2xcsvはUnicodeをサポートしていません

これを試して

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

于 2013-03-12T23:27:08.600 に答える