Python的unicode的問題具有生成從數據庫視圖CSV響應下面的Django視圖代碼:在Windows XP
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文本的位置。使用Linux上的Open Office將文件從csv轉換爲xls,並在windows xp上打開該文件將產生一個可讀的文件(沒有奇怪的字符)。
我看不到我在這裏錯過了什麼,因爲我不喜歡win XP。有沒有人遇到類似的東西?
我使用的UnicodeWriter類在底部被描述爲here。
您是否在每個操作系統中嘗試了多個瀏覽器?例如,Opera,Chrome和Firefox都運行在它們之中 - 瀏覽器特定的「怪異字符」問題是什麼?如果您下載CSV並直接在Excel或OOO中打開它,這是否仍然很奇怪 - 或者在瀏覽器中看起來很奇怪......? – 2010-07-06 15:26:04
@Alex它並不重要,我用它來打開它。問題是隻有win xp將文件視爲ASCII文本而不是unicode。當我用記事本打開它並使用保存將它保存爲unicode編碼的文本文件時,一切看起來都很好。所以編寫一個字節順序標記沒有任何幫助。我假設我必須指示瀏覽器在響應頭中是unicode編碼的文件。 – Vasil 2010-07-06 16:48:14