2013-10-07 21 views
7

私は、CVSにインポートしようとしているが、私はこのエラーに「ASCII」コーデックは位置9に文字Uは「 u2013」をエンコードすることができません:範囲内にない序(128)

UnicodeEncodeError at /brokers/csv/'ascii' codec can't encode character u'\u2013' in position 9: ordinal not in range(128) 

Unicodeを取得エラーヒント

をエンコードすることができませんでした/デコードされた文字列があった。)758から9800

私は.encode、ユニコード()などを試してみましたし、何も機能していない私は、ライブラリを必要とする場合、私は知りません他のマシンに同じコードがあり、正常に動作しているためです。

def exportar_a_csv_brokers(request): 
    #Fecha actual 
    hoy = datetime.now().date() 
    #Creado el: 
    creado_hoy = hoy.strftime("%m/%d/%Y") 
    response = HttpResponse(mimetype='text/csv') 
    response['Content-Disposition'] = 'attachment;filename= 
    "Reporte de Brokers ' + creado_hoy + '.csv"' 
    response['Content-Type'] = 'text/csv; charset=utf-8' 
    response.write("\xEF\xBB\xBF") 

    writer = csv.writer(response) 
    brokers = Broker.objects.all() 
    writer.writerow(['Creado el:    ' + creado_hoy + ' ']) 
    writer.writerow(['']) 
    writer.writerow(
    ['Apellido Paterno', 'Nombre', '# Broker', '# Licencia de Seguro', 'ID Federal', 'Nombre Agencia', 'Teléfono', 
    'Correo Electrónico', 'Fax', 'Calle', '# Interior', 'Colonia', 'Código Postal', 'Estado', 'Ciudad']) 

for broker in brokers: 
    #Imprimiendo resultados 
    writer.writerow([broker.ap_paterno, broker.nombre, broker.no_broker, 
        broker.no_licencia_seguro, broker.id_federal, broker.nombre_agencia, broker.telefono, 
        broker.correo_electronico, broker.fax, 
        broker.calle, broker.no_interior, broker.colonia, broker.codigo_postal, broker.estado, 
        broker.ciudad]) 
return response 
+3

[python-unicodecsv](https://github.com/jdunck/python-unicodecsv)ライブラリを確認してください。 –

答えて

3

lib cStringIOを使用していますか?私はStringIOをcStringIOに置き換えて同様の問題に遭遇しました。 StringIOに戻ることが解決策でした。

さらに、あなたはあなたのコードの最初の行として

from __future__ import unicode_literals 

を使用して試すことができます。

10

あなたはPython 2.xを使用していると思いますか?

書く場合は文字列に.encode( 'utf-8')を使用してみてください。

関連する問題