2017-05-12 6 views
0

私のモデルをCSVファイルとして出力しようとしています。モデルの小さなデータでうまく動作していて、大きなデータでは非常に遅いです.2番目に、CSVとしてモデルを出力する際に​​いくつかのエラーがあります。 'ASCII' コーデックの位置0-6で文字をエンコードすることはできません:序ない 範囲で - は:DjangoでCSVを出力する際に​​エラーが発生しましたか?

def some_view(request): 
    # Create the HttpResponse object with the appropriate CSV header. 
    response = HttpResponse(content_type='text/csv') 
    response['Content-Disposition'] = 'attachment; filename="news.csv"' 
    writer = csv.writer(response) 
    news_obj = News.objects.using('cms').all() 
    for item in news_obj: 
     #writer.writerow([item.newsText]) 
     writer.writerow([item.userId.name]) 

    return response 

と私が直面していますエラーは次のとおりです:使用している

UnicodeEncodeErrorを(128)

さらに、それは言う: -

/エンコードできなかった文字列だったデコード:عبداللهエラーからالحذ

+1

エラーはあなたのエンコーディングにあります。UTF-8のようなコンテンツ処理でエンコーディングフォーマットを渡します。 – Exprator

答えて

0

はとライン

writer.writerow([item.userId.name]) 

を交換してくださいエンコーディングでエンコードする必要がありますg。ほとんどのシステムではデフォルトでutf-8が使用されていますので、安全な選択です。

+0

大ファイルのために何か理由がありますか? –

+0

どういう意味ですか?どのようなエラーがありますか?ファイルのサイズはどれくらいですか? –

+0

懸念をお寄せいただきありがとうございます。私は、大きなCSVファイル –

0

、csvファイルの書き込み内容がASCII文字のようなものです。それでキャラクターをデコードしてください。

>>>u'aあä'.encode('ascii', 'ignore') 
'a' 

は、ASCII文字を無視してからこのエラーを修正することができます。ファイルにUnicode文字列を保存する前に

writer.writerow([item.userId.name.encode('utf-8')]) 

あなたを:

writer.writerow([item.userId.name.encode('ascii', 'ignore')]) 
関連する問題