在Python中使用Tornado下载时如何指定CSV文件编码?

时间:2017-05-11 16:21:17

标签: python csv encoding utf-8 tornado

我想为用户提供下载CSV文件的功能,该文件将在请求完成时创建,例如:用户发出请求,从数据库中提取数据,然后创建文件。我想使用特定的编码(在我的情况下是UTF-8)。当我没有指定编码时,我认为使用了服务器本地编码(在我的例子中是ascii-us)。所以我试图将编码作为标题传递,但没有成功 - 编码仍然是ascii-us。这是我的代码。

class CsvHandler(RequestHandler):
        lines = ['line1', 'line2'] # in actual use case those lines are from DB
        def get(self):
            self.set_header('Content-Type', 'text/csv')
            self.set_header('Content-Disposition', 'attachment; filename=' + filename)
            self.set_header('Content-Encoding', 'UTF-8')

            for line in lines:
                self.write(line.encode('UTF-8'))

以下是下载文件的详细信息:

  

file -i my_file.csv
  my_file.csv:text / plain;字符集= US-ASCII

我想要charset = utf8

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以试试这个

class CsvHandler(RequestHandler):
    lines = ['line1', 'line2'] # in actual use case those lines are from DB
    def get(self):
        self.set_header('Content-Type', 'text/csv')
        self.set_header('Content-Disposition', 'attachment; filename=' + filename)

        for line in lines:
            self.write(line.encode("UTF-8"))