1
在我的Django网络应用程序中,用户可以在一个位置上传一个文本文件,其中每行包含一个将被操作的字符串 - 该文件未被存储在服务器上或任何其他文件像那样。在Django上传的文件中处理UTF-16
我的代码如下所示:
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。
在适当的蟒蛇,我可以做到以下几点:
import codecs
from django.utils.encoding import *
fo = codecs.open('filename', 'r', 'utf-16')
zz = fo.readlines()
,然后价值观似乎是可控的,但不能与文件上传。
处理request.FILES中的数据以处理不同的字符集的适当方式是什么?
谢谢。是的,缺少复制/粘贴是因为当时使用了两台未连接的机器 - 您说得对,出现了错误,但没有完全解决,我将编辑我的帖子以反映。 我确实看到了SO页面,当我尝试使用最有可能解决问题的答案时,我意识到我已经设置了稍微不同的东西,从而阻止了它的工作。我昨天进化了一些确切的代码,因为我试图让它工作。 – geoffjentry 2009-12-11 15:37:07
是的,我是对的,因为我一直在误用旧帖子中的例子。现在就开始工作...... – geoffjentry 2009-12-11 19:08:56
为了可能出现此问题的其他人的利益,请考虑发布您的解决方案。请说明它与哪个版本的django配合使用。 – 2009-12-11 20:51:15