General error 1366 incorrect string value…

Сегодня зачищал PDOException: SQLSTATE: General error: 1366. Происходила ошибка при записи в базу UTF строк, содержащих неизвестные базе данных UTF символы. По логам было ясно, что и куда пытается сохранить программа.

Путей решения маячило целых два:

  • «научить» базу понимать эти символы,
  • убирать символы, вызывающие проблему.

Но сначала хотелось разобраться, чем одни UTF символы отличаются от других. Я не вдавался в подробности того как кодируется UTF, какие они бывают.

Оказалось, что UTF содержит символы, кодируемые последовательностью от 1 до 4 байт. Вот как они шифруются в бинарном коде:

В моем случае проблемы с базой вызвали 4х байтные символы.

«Учим» базу

Можно поменять тип поля на BLOB, чтобы база не производила проверку валидности UTF. А можно проверить всю цепочку соединения с базой, чтобы переключиться на поддержку кодировки utf8mb4.

Лично мне, вся эта псевдографика, которая засунута в 4х-байтные таблицы utf, совершенна не нужна, потому я пойду вторым путем.

Убираем 4х-байтные символы UTF из текста

Для PHP получился вот такой шаблон для замены:

Если вдруг понадобится «почикать» 3х байтные, вот пример регулярного выражения и для него:

Мало букафф? Читайте есчо !

Использование canvas на C# Xamarin

Июль 3, 2022 г.

Это часть статьи по опыту создания приложения с использованием C# Xamarin для Android платформы. Canvas - это общий для разных платформ подход к работе с графикой, он обычно материализуется в специфичном для языка / платформы объекте, который так и ...

Читать

Многострочные константы в js

Сентябрь 19, 2018 г.

JavaScript в web был когда то всего лишь приятным дополнением. А сейчас сложно найти сайт, который не использует скрипты. А если уж часть шаблона формируется скриптом, то без много-строчных констант не обойтись. Но в javascript с ними не так все ...

Читать

Прерывание Toast в kotlin

Февраль 8, 2025 г.

Всплывающее сообщение, формируемое Toast, обычно используют в стиле - создал - показал - забыл. Если сообщений много, то они ждут своей очереди, чтобы быть показанными. Но когда ситуация меняется быстро в приложении, то сообщения могут просто не успевать ...

Читать

Слежение за изменения sass файлов

Июль 24, 2018 г.

Особенно на этапе верстки макетов у разработчика возникает необходимость очень часто обновлять стили, проверять результат и снова вносить какие то правки. ...

Читать
 

Комментарии к «General error 1366 incorrect string value…»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: