Python Flask .txt文件编码

时间:2015-05-25 16:55:14

标签: python encoding flask

我在Flask应用程序中使用Jinja2模板。 从上传的.txt文件中读取内容时,我得到结果为

'\xff\xfeA\x00e\x00r\x00 \x00L\x00i\x00n\x00g\x00u\x00s\x00 \x00h\x00a ...'

虽然我可以在调试控制台中看到正确的文件内容。

我的代码就像

@main_app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    if file:
        filedata = file.read()

    return render_template('page.html',
        components = [{'filecontents': filedata}]
    )

我尝试过其他问题的解决方案,例如建议使用.encode()和.decode(),但它们没有用。

可能是什么问题?

2 个答案:

答案 0 :(得分:1)

documentation

复制
def read_file(filename, charset='utf-8'):
    with open(filename, 'r') as f:
        return f.read().decode(charset)

将您的文件编码用作charset,例如:

test_string = '\xff\xfeA\x00e\x00r\x00\x00L\x00i\x00n\x00g\x00u\x00s\x00 \x00h\x00a ...'
print test_string.decode('latin')
>>> ÿþA

我只是猜测你的文件是latin编码的。

答案 1 :(得分:-3)

尝试放

import sys
reload(sys).setdefaultencoding("utf-8")

代码开头。