#mysql #django
#mysql #django
Вопрос:
В моем приложении Django я читаю текстовый файл и загружаю его в виде длинного текстового поля в базу данных mysql. Моя база данных поддерживает кодировку UTF-8, но я получаю следующую ошибку:
Тип исключения: предупреждение при / загрузке Значение исключения: Неверное строковое значение: ‘xE0 xB9 x82 xE0 xB8 xA3 …’ для столбца ‘текст’ в строке 1
Код, который преобразует его в юникод в python, находится здесь:
fileobj = self.request.FILES.get('filepath', None)
filetext = unicode(fileobj.read(), 'utf-8')
uploadedText = models.UploadedText()
uploadedText.text = filetext uploadedText.save()
Ответ №1:
Убедитесь, что вы установили параметры сортировки базы данных в utf8_general_ci и что ваша модель UploadedText выглядит примерно так:
class UploadedText(models.Model):
text = models.CharField(max_length=500)
Затем попробуйте этот код:
fileobj = self.request.FILES.get('filepath', None)
filetext = fileobj.read()
uploadedText = models.UploadedText()
uploadedText.text = filetext
uploadedText.save()
Вам не нужно явно преобразовывать содержимое файла в юникод, если оно уже в юникоде. Также протестируйте этот код для файла только с ascii-содержимым, чтобы увидеть, получите ли вы требуемый ответ.
Надеюсь, это поможет. Если вы обнаружите какие-либо дополнительные ошибки, пожалуйста, ОПУБЛИКУЙТЕ их. Приветствия