2024-03-29 15:35:06 发布
网友
我在视图调用中有以下代码。。在
def view(request): body = u"" for filename, f in request.FILES.items(): body = body + 'Filename: ' + filename + '\n' + f.read() + '\n'
在某些情况下
我做错什么了?(我使用的是Django 1.1。)
谢谢。在
如果从文件中读取的数据是utf-8编码的,则使用utf-8编码,否则使用任何编码。在
首先解码,然后附加到正文例如
data = f.read().decode("utf-8") body = body + 'Filename: ' + filename + '\n' + data + '\n'
阿努拉格的回答是正确的。然而,这里的另一个问题是,你不能肯定知道用户上传的文件的编码。在最常见的元组上循环,直到找到正确的元组,这可能很有用:
encodings = ('windows-xxx', 'iso-yyy', 'utf-8',) for e in encodings: try: data = f.read().decode(e) break except UnicodeDecodeError: pass
Django有一些utilities来处理这个问题(smart-unicode、force-unicode、smart-str)。通常你只需要智能unicode。在
from django.utils.encoding import smart_unicode def view(request): body = u"" for filename, f in request.FILES.items(): body = body + 'Filename: ' + filename + '\n' + smart_unicode(f.read()) + '\n'
如果从文件中读取的数据是utf-8编码的,则使用utf-8编码,否则使用任何编码。在
首先解码,然后附加到正文例如
阿努拉格的回答是正确的。然而,这里的另一个问题是,你不能肯定知道用户上传的文件的编码。在最常见的元组上循环,直到找到正确的元组,这可能很有用:
Django有一些utilities来处理这个问题(smart-unicode、force-unicode、smart-str)。通常你只需要智能unicode。在
相关问题 更多 >
编程相关推荐