在我的Django webapp中,用户可以在一个地方上传一个文本文件,其中每一行都包含一个字符串,该字符串将被操作-该文件没有存储在服务器上或类似的地方。
我的代码如下所示:
roFile = request.FILES['uploadFileName']
ros = roFile.read().strip()
ros = ros.split('\n')
ros = [t.strip() for t in ros]到目前为止,这已经成功了。今天,我有一个用户上传了一个文件,这导致了问题。在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中处理数据的适当方式是什么?
发布于 2009-12-11 06:25:37
第一部分没有回答您的问题(我对django一无所知);我只想指出,当您提供您所说的工作或不工作的代码时,您应该复制/越过您运行的实际代码;不要从内存中键入它。
这段代码:
import codecs
from django.utils.encoding
f = codecs.open('filename', 'r', 'utf-16')
zz = fo.readlines()有两个问题,看起来应该是:
import codecs from django.utils.encoding
fo = codecs.open('filename', 'r', 'utf-16')
zz = fo.readlines()关于你的问题:谷歌(“django request files")似乎提供了一些有用的线索;你调查过它们吗,包括this?其中一个线索是,文件上传似乎在后来的django版本中得到了改进;您使用的是哪个版本?
https://stackoverflow.com/questions/1884399
复制相似问题