Имеет следующий код представления django, который генерирует ответ CSV из представления базы данных:
def _get_csv_stats(request, **filterargs):
result = GlobalStats.objects.select_related().filter(**filterargs).values_list('user__username',
'user__first_name','user__last_name',
'center__name', 'action_name',
'action_date').annotate(num = Count('id')).order_by("action_date")
response = HttpResponse(mimetype = 'text/csv')
response.write( codecs.BOM_UTF8 )
response['Content-Disposition'] = 'attachment; filename=statistcs.csv'
writer = UnicodeWriter(response)
for value in result:
writer.writerow([unicode(v) for v in value])
return response
Некоторые столбцы содержат текст utf8. Когда я загружаю файл и открываю его с помощью Linux или Mac OS X, я вижу текст правильно. Но при загрузке и открытии файла с помощью Windows XP вместо текста без ASCII появляются странные символы. Преобразование файла из csv в xls с использованием Open Office в Linux и открытие файла в Windows XP приведет к читаемому файлу (без странных символов).
Я не вижу, что мне здесь не хватает, так как я не работаю с Win XP. Кто-нибудь испытывал что-нибудь подобное?
Используемый класс UnicodeWriter описан здесь внизу.