2015-05-25 85 views
1

我在Flask應用程序中使用Jinja2模板。 當讀取從上傳的txt文件內容,我得到的結果作爲Python Flask .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()解決方案,但他們沒有工作。

可能是什麼問題?

回答

-3

嘗試把

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

在你的代碼的開始。

+0

不要弄亂'setdefaultencoding'http://ziade.org/2008/01/08/syssetdefaultencoding-is-evil/ – dm295

+0

這是非常*不好的建議。 – davidism

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編碼。