簡體   English   中英

'ascii'編解碼器無法對位置9中的字符u'\\ u2013'進行編碼:序數不在范圍內(128)

[英]'ascii' codec can't encode character u'\u2013' in position 9: ordinal not in range(128)

我正在嘗試導入到cvs,但是我收到了這個錯誤

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

Unicode錯誤提示

無法編碼/解碼的字符串是:)758-9800

我試過.encode,unicode()等沒有任何作用,我不知道我是否需要一個庫或其他東西,因為我在其他機器上有相同的代碼並且工作正常。

 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

我猜你在使用python 2.x?

如果是這樣,請在寫字時嘗試在字符串上使用.encode('utf-8')。

你在使用lib cStringIO嗎? 用cStringIO替換StringIO后遇到了類似的問題。 回到StringIO是解決方案。

此外,您可以嘗試使用

from __future__ import unicode_literals

作為代碼的第一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM