2016-11-02 4 views
2

Emoji хранятся как? в моей базе данных (когда я визуализирую их с помощью phpMyAdmin), однако, когда я получаю их с помощью простого запроса (от php), я получаю реальное значение.emoji дисплей как? в базе данных MySQL

линия на базе (с помощью PhpMyAdmin) enter image description here

запрос от PHP

$query = "SELECT id,com 
      FROM coms_table 
      WHERE id = 627"; 

Результат

id  com 
627 \ud83d\ude0e 

С помощью этой команды

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 

я получаю это:
enter image description here

my.cnf файл:

[client] 
default-character-set=utf8mb4 

[mysql] 
default-character-set=utf8mb4 

[mysqld] 
default-storage-engine=MyISAM 
innodb_file_per_table=1 
performance-schema=0 
innodb_buffer_pool_size=134217728 
max_allowed_packet=268435456 
open_files_limit=10000 
local-infile=0 
character-set-client-handshake = TRUE 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 

В целом, проблема возникает только, когда я подключиться к базе данных используя phpMyAdmin. Хуже того, когда я пытаюсь импортировать базу данных с помощью phpMyAdmin, все вопросительные знаки заменяются на «?», И данные окончательно теряются.

EDIT 1
PHPMYADMIN> Переменные enter image description here значения Session (utf8) отличаются от ожидаемых значений (utf8mb4)

+1

Какую версию phpMyAdmin вы используете? Похоже, что он не поддерживает кодировку символов, которую вы используете. –

+0

@RyanLaBarre Я запускаю версию 4.0.10.14 из phpMyAdmin –

ответ

0

Похоже, что это ошибка phpMyAdmin (исправлена ​​в версии 4.6.4).
Когда вы используете phpMyAdmin для подключения к вашей базе данных, переменные сеанса, такие как character_set_client и character_set_results, не инициализируются значениями по умолчанию. См. Это commit.

Если у вас есть эта ошибка и вы хотите импортировать/экспортировать свою базу данных, не используйте phpMyAdmin. В качестве обходного пути выполните действие по импорту с использованием this link и действие по экспорту с использованием документации по адресу this link.

0

Вам нужно character_set_client, _connection, and _results всем быть utf8mb4. Остальное не имеет значения.

одиночный вопросительный знак, вероятно, означает, что данные были потеряны по мере его вставки. (4 вопроса для 1 emoji означают другую проблему.)

+0

Я попытался установить 'character_set_client' и' character_set_results' на ** utf8mb4 **, редактируя файл my.cnf (/etc/my.cnf), но он имеет no effect –

+0

Я редактировал свое сообщение, вы можете видеть, что значения 'character_set_client' и' character_set_results' равны ** utf8mb4 **. Однако значения сеанса разные. Есть идеи? (Я уже перезагрузил mysql и перезапустил сервер) –

+0

Непонятно, как и даже _if_ эти настройки проходят через сеанс.При подключении следует установить набор символов, который использует клиент. Это делается разными способами разными клиентами. Некоторые перечислены [_here_] (http://mysql.rjweb.org/doc.php/charcoll#other_computer_languages). –

 Смежные вопросы

  • Нет связанных вопросов^_^