我在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(),但它们没有用。
可能是什么问题?
答案 0 :(得分:1)
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")
代码开头。