Измените тип данных столбца на NVARCHAR, где он хранится в БД, например:
Старая структура таблицы:
CREATE TABLE (
COL_1 VARCHAR(10)
COL_2 VARCHAR(500),
...
COL_N VARCHAR(10)
);
И вы сохраняете сообщение в столбце "COL_2", затем меняете его на NVARCHAR как:
CREATE TABLE (
COL_1 VARCHAR(10)
COL_2 NVARCHAR(500),
...
COL_N VARCHAR(10)
);
Полагаю, сообщение приходит на языке, который не поддерживается текущим набором символов столбца.
РЕДАКТИРОВАТЬ - 1: Обновлен с примером решения
Вот рабочий набор для моей системы, я также изменил набор символов таблицы и сопоставление, как показано ниже, затем он работает нормально.
mysql> create table test_emoji(col1 int, str_with_emoji varchar(200)) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 0 rows affected (0.40 sec)
mysql> insert into test_emoji(col1,str_with_emoji) values (1,'dh????hzhzhzzhjzj 我爱你 ❌');
Query OK, 1 row affected (0.09 sec)
mysql> select * from test_emoji;
+------+---------------------------------------------+
| col1 | str_with_emoji |
+------+---------------------------------------------+
| 1 | dh????hzhzhzzhjzj 我爱你 ❌ |
+------+---------------------------------------------+
1 row in set (0.00 sec)
РЕДАКТИРОВАТЬ-2: В SQL Server:
Вы должны использовать префикс 'N' перед строкой, как показано ниже, вне фактической строки:
insert into test_emoji(col1,str_with_emoji) values (1,N'dh????hzhzhzzhjzj 我爱你 ❌');