[django]通过自定义 Model Field 的方式将上传的文本文件按 UTF-8 编码保存
默认情况下上传的文件都是按原始编码进行保存的,用户上传什么编码的文件就保存什么编码的文件。
下面将举例说明如何通过自定义 Model Field 的方式将文件的编码改为 UTF-8。
假设有个文件: app/fields.py
import chardet
from django.db import models
from south.modelsinspector import add_introspection_rules
class UTF8TextFileField(models.FileField):
"""上传的文本文件将按 utf8 编码保存"""
def clean(self, *args, **kwargs):
uploaded_file = super(UTF8TextFileField, self).clean(*args, **kwargs)
content_raw = uploaded_file.file.read()
# 猜测原始文件编码
encoding = chardet.detect ...