使用金字塔的python unicode csv导出

使用金字塔的python unicode csv导出,python,pyramid,export-to-csv,Python,Pyramid,Export To Csv,我正在尝试将具有非ascii字符的mongodb导出为csv格式。 现在,我正在尝试使用pyramid并使用pyramid.response from pyramid.response import Response from mycart.Member import Member @view_config(context="mycart:resources.Member", name='', request_method="POST", permission = 'admin') def m

我正在尝试将具有非ascii字符的mongodb导出为csv格式。 现在,我正在尝试使用pyramid并使用pyramid.response

from pyramid.response import Response
from mycart.Member import Member

@view_config(context="mycart:resources.Member", name='', request_method="POST", permission = 'admin')
def member_export( context, request):
     filename = 'member-'+time.strftime("%Y%m%d%H%M%S")+".csv"
     download_path = os.getcwd() + '/MyCart/mycart/static/downloads/'+filename

     member = Members(request)

     my_list = [['First Name,Last Name']]

     record = member.get_all_member( )             
     for r in record:

         mystr = [ r['fname'],  r['lname']]

         my_list.append(mystr)

     with open(download_path, 'wb') as f:
         fileWriter = csv.writer(f, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
         for l in my_list:
             print(l)
             fileWriter.writerow(l)

     size = os.path.getsize(download_path)
     response = Response(content_type='application/force-download', content_disposition='attachment; filename=' + filename)
     response.app_iter = open(download_path , 'rb')
     response.content_length = size

     return response
在mongoDB中,名字显示为
,当我使用print时,它也显示
。然而,当我使用excel打开它时,它显示随机的东西-ç¾

然而,当我试图在shell中查看它时

$ more member-20130227141550.csv
它成功地正确显示了非ascii字符


我应该如何纠正这个问题?

我不是一个Windows操作系统的人,所以我不确定问题是出在您的代码上,还是excel没有很好地处理非ascii字符上。但我注意到,您正在使用python模块编写文件,它是


其他用户报告成功使用csv模块作为替代品。也许您可以尝试以csv编写器的身份加入此模块,看看您的问题是否会神奇地消失。

我不是Windows用户,因此我不确定问题是否出在您的代码上,还是excel没有很好地处理非ascii字符。但我注意到,您正在使用python模块编写文件,它是


其他用户报告成功使用csv模块作为替代品。也许您可以尝试以csv编写器的身份加入此模块,看看您的问题是否会神奇地消失。

可能您可以尝试本文中提到的内容,或者您可以使用UnicodeSV来完成此工作,因为python的内部csv模块不支持unicode。Excel根据计算机的当前语言设置解释csv文件。它不能识别UTF-8,相反,它会将数据错误地解释为不同的编码。解决方案:将您的CSV编码定位于将要使用它的人。可能您可以尝试本文中提到的内容,或者您可以使用unicode-Decsv来完成这项工作,因为python的内部CSV模块不支持unicode。Excel根据计算机的当前语言设置来解释CSV文件。它不能识别UTF-8,相反,它会将数据错误地解释为不同的编码。解决方案:将您的CSV编码定位于将要使用它的人。