mysql не может проглотить символ
От: destroy  
Дата: 03.12.14 15:15
Оценка:
При попытке в phpmyadmin занести данные в таблицу выдается след ошибка

Warning: #1366 Incorrect string value: '\xF0\x9F\x92\x98' for column 'txt' at row 1

Спотыкается mysql на некоем символе, который пришел из описания к видео инстаграмма (на инстаграмме он выводился как квадратик) и является скорее всего интерпритацией смайлика эмодзи, так как vk к примеру распознал этот символ и вывел вместо него картинку "сердечко".

Привожу символ здесь, хотя вряд ли что то понятное выведется здесь:
💘


Структура таблицы

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `txt` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf32 AUTO_INCREMENT=2 ;



Результат вставки:

INSERT INTO `test` (`id`, `txt`) VALUES
(1, '????');



Вначале кодировка была utf8_general_ci, затем я сделал utf8mb4 и utf32 — ничего не помогает.

Вопрос: как в php можно отловить подобный символ, а лучше все подобные ему, чтобы mysql не крашился и не обрезал весь текст, идущий после него?
Re: mysql не может проглотить символ
От: Anton Batenev Россия https://github.com/abbat
Дата: 03.12.14 17:36
Оценка:
Здравствуйте, destroy, Вы писали:

d> Вопрос: как в php можно отловить подобный символ, а лучше все подобные ему, чтобы mysql не крашился и не обрезал весь текст, идущий после него?


А в php какая кодировка соединения (что говорит вызов "SHOW VARIABLES LIKE '%char%'" из самого скрипта)?
... в первом классе мне говорили, что нужно делиться, а теперь говорят, что это незаконно ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.