Всех приветствую ! Я парсю этот новостной ресурс.После чего спарщенные данные(заголовок,дата,текстовой контент) заношу в БД.И вот при парсинге этой страницы .
У меня Pymysql(библиотека которую я использую для insert'a в БД) ругается на текстовой контент страницы. Судя по traceback:
pymysql.err.InternalError: (1366, "Incorrect string value: '\xF0\x9F\x8F\xB3\xEF\xB8...' for column 'item_text_content' at row 1")
Вот текстовой контент на которую ругается Pymysql:
This a wedding party for girl who is under 13 years old. I cried when I received this video from Bahmai County which is a county in Kohgiluyeh and Boyer-Ahmad Province in Iran. Under Islamic laws 13 year old girl can marry but cannot chose her dress code. pic.twitter.com/gqIQZDUcju — Masih Alinejad
Взято отсюда stackoverflow.com Мой вольный перевод схожей проблемы, правда там коннект через JDBC, но смысл тот-же.
Теория
Utf8 в MySQL's допускает только сиволы Unicode, они должны быть представлены 3 байтами в UTF-8. Здесь вы имеете символ требующий 4 байт.
Если версия вашего MySQL 5.5 или более поздняя вы можете изменить кодировку вашего поля с utf8 на utf8mb4. Эта кодировка поддерживает хранение 4 байт в UTF-8.
Вы также можете задать параметр сервера character_set_server как utf8mb4 в конфигурационном файле MySQL. Это выглядит так connector-j-reference-charsets
Два примера решения с рестартом базы и без
Решение 1.
Измените файл my.cnf как в примере
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
это поможет быть уверенным, что база данных и character_set_client, character_set_connection, character_set_results используют utf8mb4 по умолчанию.
2 Перезапустите MySQL
3 Измените кодировку таблицы и столбца на utf8mb4
4 НЕ ЗАДАВАЙТЕ кодировку в своём подключении, потому-что это переопределит character_set_client, character_set_connection, character_set_results в utf8
============================
Решение 2 (без рестарта)
1 Измените кодировку таблицы и столбца на utf8mb4
2 используйте кодировку UTF-8 в вашем подключении
3 Пишите ваши sql команды как в примере ниже 'SET NAMES utf8mb4;INSERT INTO Mytable ...';
В этой теме есть комментарий, что второй способ сработал для insert'a. Так же там есть инструкция как верно сделать select.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хотел сделать роутинг на чистом php, но потом меня черт дернул установить symfony/router и теперь я чувствую себя идиотоиУ меня проблема с подключением...