СИТУАЦИЯ:
Извините, если этот вопрос уже задан, но решения для меня не работают.
Независимо от того, что я пытаюсь, я не могу хранить emoji в моей базе данных. Они сохраняются как ????. 
Единственные emojis, которые были правильно сохранены, - это те, которые требуют только 3 байта, например, застенчивое лицо или солнце.
Фактический utf8mb4 не работает.
Он был протестирован как на Android, так и на Ios. С такими же результатами.
ВЕРСИИ
Mysql: 5.5.49 
CodeIgniter: 3.0.0
ШАГИ:
-  Я изменил набор символов базы данных и свойства сопоставления. ALTER DATABASE my_database CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci
-  Я изменил настройки набора символов и свойства сопоставления. ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
-  Я установил каждое поле таблицы, где это возможно, в качестве Кодировки: UTF-8(ut8mb4)и Collation:utf8mb4_unicode_ci
-  Я изменил соединение с базой данных в приложении CodeIgniter. 
-  Я выполнил следующее: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci
-  Наконец, я также пробовал это: REPAIR TABLE table_name; OPTIMIZE TABLE table_name;
Все должно быть настроено правильно, но все же оно не работает.
НАСТРОЙКИ БАЗА ДАННЫХ:
Это результат выполнения следующей команды:
`SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';`
НАСТРОЙКИ ТАБЛИЦЫ:
Сводка таблицы структуры таблицы:
ПОДКЛЮЧЕНИЕ БАЗЫ ДАННЫХ:
Это настройки подключения базы данных в файле database.php(обратите внимание, что это не единственная база данных, есть и другие, которые подключаются с помощью utf8)
$db['my_database'] = array(
        'dsn'           => '',
        'hostname'      => PROJECT_DATABASE_HOSTNAME,
        'username'      => PROJECT_DATABASE_USERNAME,
        'password'      => PROJECT_DATABASE_PASSWORD,
        'database'      => PROJECT_DATABASE_NAME,
        'dbdriver'      => 'mysqli',
        'dbprefix'      => '',
        'pconnect'      => FALSE,
        'db_debug'      => TRUE,
        'cache_on'      => FALSE,
        'cachedir'      => '',
        'char_set'      => 'utf8mb4',
        'dbcollat'      => 'utf8mb4_unicode_ci',
        'swap_pre'      => '',
        'encrypt'       => FALSE,
        'compress'      => FALSE,
        'stricton'      => FALSE,
        'failover'      => array(),
        'save_queries'  => TRUE
    );
НАСТРОЙКИ MY.CNF:
Это все содержимое файла my.cnf:
[mysqld]
default-storage-engine=MyISAM
innodb_file_per_table=1
max_allowed_packet=268435456
open_files_limit=10000
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
ВОПРОС:
Вы знаете, почему это не работает? Я что-то пропустил?
HYPHOTESIS 1:
Я не уверен, но причиной проблемы может быть следующее:
Как вы можете видеть в my.cnf character-set-server, явно указано как utf8mb4:
Но после запуска запроса в базе данных:
 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
В результате character-set-server = latin1
Знаете ли вы, почему? Почему на самом деле не обновляется?
HYPHOTESIS 2:
Приложение использует несколько разных баз данных. Этот параметр установлен в utf8mb4, но все остальные установлены в utf8. Это может быть проблемой, даже если они разделены базы данных?
Спасибо!
EDIT:
Это результат SHOW CREATE TABLE app_messages;
CREATE TABLE `app_messages` (
  `message_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `project_id` bigint(20) NOT NULL,
  `sender_id` bigint(20) NOT NULL,
  `receiver_id` bigint(20) NOT NULL,
  `message` text COLLATE utf8mb4_unicode_ci,
  `timestamp` bigint(20) DEFAULT NULL,
  `is_read` enum('x','') COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`message_id`)
) ENGINE=InnoDB AUTO_INCREMENT=496 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
ИЗМЕНИТЬ 2:
Я выполнил следующую команду:
INSERT INTO app_messages (message_id, project_id, sender_id, receiver_id, message, timestamp, is_read)
VALUES ('496','322','77','188', '😜' ,'1473413606','x');
И другие два аналогичные с 😂 и 👻
Они были вставлены в таблицу без проблем:
Но в самом приложении я действительно вижу: ? (на этот раз только один, а не 4)




