Где вы получаете сообщение об ошибке?Какая операция выполняется?
C3A6
- это гекс UTF-8 (см. MySQL utf8 или utf8mb4) для æ
;кажется ли вероятным, что это был желаемый символ?
Чтобы обработать utf8 (или utf8mb4), вам необходимо определить, какая кодировка клиента .Похоже, UTF-8.Итак, при подключении к MySQL, скажите ему, что - используйте их при вызове подключения:
charset="utf8", use_unicode=True
Если символ находится в исходном коде Python, вам нужно
# -*- coding: utf-8 -*-
вначало источника.
Кроме того, столбец, в который вы вставляете, должен быть CHARACTER SET utf8
(или utf8mb4).
utf8mb4
необходим для эмодзи и некоторых китайцев;в противном случае он «эквивалентен» utf8
.
. Не используйте decode()
или любые другие функции преобразования;это только сделает вещи труднее исправить.На этой арене два несправедливости не дают права;это еще хуже.
Если у вас есть другие симптомы искаженных символов, см. Проблема с символами UTF-8;я вижу не то, что сохранил
Для дальнейшего обсуждения, пожалуйста, предоставьте вызов соединения, соответствующий оператор SQL, SHOW CREATE TABLE
и все остальное.
C3A6
является допустимым символом utf8 / utf8mb4 æ
и может интерпретироваться как действительный, хотя и маловероятный, latin1 æ
.Но это неверно для CHARACTER SET ascii
.(Я не знаю, как появилось сообщение об ошибке, если в сообщении не указано ascii или какая-то неясная кодировка.)