Проблемы с юникодом Python в Windows XP - PullRequest
0 голосов
/ 06 июля 2010

Имеет следующий код представления 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 описан здесь внизу.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2010

Во-первых: я не знаю django, поэтому, возможно, это далеко.

Проверьте, действительно ли ваш писатель выводит UTF-8, если вы записываете в файл спецификацию UTF-8.Unicode и UTF-8 не совпадают.Кроме того, afaikt, Windows Notepad понимает спецификацию UTF-8, поэтому получение «странных» символов может означать две вещи:

a) остальная часть файла не имеет кодировки UTF-8, попробуйте1005 * для этого

b) символы, которые вы пытаетесь отобразить, не поддерживаются шрифтом

0 голосов
/ 06 июля 2010

Правильно ли отображается текст, зависит от того, поддерживает ли начертанный шрифт все символы Юникода.Это не проблема с твоим джанго.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...