在我的Django webapp中,用户可以在一个位置上传一个文本文件,其中每行包含一个将被操作的字符串 - 该文件未存储在服务器上或类似的内容。
我的代码如下所示:
roFile = request.FILES['uploadFileName']
ros = roFile.read().strip()
ros = ros.split('\n')
ros = [t.strip() for t in ros]
到目前为止,这已经有了AOK的作用。今天我让用户上传了导致问题的文件。在Django中使用这些字符串会产生以下错误:
ProgrammingError: ERROR: invalid byte sequence for encoding "UTF8":0xff
用户告诉我他将文件保存为UTF-16。
在python中,我可以执行以下操作:
import codecs
from django.utils.encoding import *
fo = codecs.open('filename', 'r', 'utf-16')
zz = fo.readlines()
然后值似乎是可管理的,但不是文件上传。
为了处理不同的字符集,在request.FILES中处理数据的适当方法是什么?
答案 0 :(得分:1)
第一部分没有回答你的问题(我对django一无所知);我只想指出,当你提供你认为有效或无效的代码时,你应该复制/超过你运行的实际代码;不要从内存中输入。
此代码:
import codecs
from django.utils.encoding
f = codecs.open('filename', 'r', 'utf-16')
zz = fo.readlines()
有2个问题,看起来应该是:
import codecs from django.utils.encoding
fo = codecs.open('filename', 'r', 'utf-16')
zz = fo.readlines()
对于你的问题:谷歌(“django请求文件”)似乎提供了一些有用的线索;你有没有调查过它们,包括this?其中一个线索是文件上传似乎在django的后续版本中得到了改进;你用的是什么版本?