Всех приветствую ! Я парсю этот новостной ресурс.После чего спарщенные данные(заголовок,дата,текстовой контент) заношу в БД.И вот при парсинге этой страницы .
У меня 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.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотел сделать роутинг на чистом php, но потом меня черт дернул установить symfony/router и теперь я чувствую себя идиотоиУ меня проблема с подключением...