Заранее благодарим вас за то, что уделили время чтению.
В настоящее время я разрабатываю проект в Django 2.X (python 3.7.4), который использует MySQL 5.5 в качестве БД.
Этот проект потребляет данные из внешнего API и иногда вызывает следующую ошибку при попытке сохранить потребляемые данные (в виде специальной строки c, взятой из JSON):
mymodel.value = mystring # string taken from the JSON
mymodel.save()
...
django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x8E\\xA8' for column 'value' at row 1")
Я выделил одну из JSON строк, вызывающих проблемы, и проверил каждый из символов следующим образом:
for i in mystring:
print(i, ord(i))
, который возвращает:
...
d 100
! 33
32
127912
Когда попытка сохранить строку без последнего символа работает как шарм, поэтому я предполагаю, что кодовая точка 127912 может быть причиной проблемы.
Я также изменил кодировку столбца в таблице базы данных:
ALTER TABLE <my_table> CHANGE COLUMN value value LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
* Field: value
* Type: longtext
* Collation: utf8mb4_unicode_ci
* Null: NO
* Privileges: select,insert,update,references
Не повезло
Какие-нибудь предложения по сохранению строки?