【发布时间】:2009-12-10 22:02:39
【问题描述】:
在我的 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 中的数据的适当方法是什么?
【问题讨论】: