簡體   English   中英

Windows XP上的Python unicode問題

[英]Python unicode problems on Windows XP

具有以下從數據庫視圖生成CSV響應的django視圖代碼:

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打開它時,XI可以正確看到文本。 但是,使用Windows XP下載和打開文件的奇怪字符會出現在非ASCII文本的位置。 使用Linux上的Open Office將文件從csv轉換為xls並在Windows xp上打開文件將得到可讀的文件(沒有奇怪的字符)。

我看不到我在這里缺少什么,因為我不使用Win XP。 有沒有人經歷過類似的經歷?

我使用的UnicodeWriter類descibed 這里在底部。

文本是否正確顯示取決於所繪制的字體是否支持所有Unicode字符。 這不是您的django的問題。

第一:我不知道django,所以也許這還很遙遠。

如果您將UTF-8 BOM寫入文件,請檢查您的編寫器是否實際輸出UTF-8。 Unicode和UTF-8不一樣。 同樣,afaikt,Windows記事本是否理解UTF-8 BOM,所以您得到“奇怪”字符可能意味着兩件事:

a)文件的其余部分不是真正的UTF-8編碼, v.encode('utf-8')嘗試v.encode('utf-8')

b)字體不支持您嘗試顯示的字符

暫無
暫無

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

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