Heim  >  Artikel  >  Backend-Entwicklung  >  MYSQL utf8mb4 fügt verstümmelte Emoji-Ausdrücke ein

MYSQL utf8mb4 fügt verstümmelte Emoji-Ausdrücke ein

WBOY
WBOYOriginal
2016-08-04 09:21:141584Durchsuche

Über das Problem des MYSQL utf8mb4-Stringsatzes.

Die Tabellenstruktur ist wie folgt:

MYSQL utf8mb4 fügt verstümmelte Emoji-Ausdrücke ein

Der folgende Code:

<code class="php">$db     = new mysqli('x', 'xxx', 'xxxxx');
$db->select_db('xxx');
$db->set_charset('utf8mb4');

//这里是一个emoji表情
$contents = <<<EOT
"\ud83d\udca5"
EOT;

$contents = json_decode($contents). "hello";
echo $contents, "\t\n";

$sql    = "INSERT INTO `utf8mb4`(`contents`) VALUES('$contents')";
echo $sql, "\t","\n";
$db->query($sql);
print_r($db->error_list);
echo "\t\n";
exit();</code>

Aber nach der Lagerung ist es ein ?wie unten gezeigt:

MYSQL utf8mb4 fügt verstümmelte Emoji-Ausdrücke ein

Auf der Suche nach einer Lösung.

Antwortinhalt:

Über das Problem des MYSQL utf8mb4-Stringsatzes.

Die Tabellenstruktur ist wie folgt:

MYSQL utf8mb4 fügt verstümmelte Emoji-Ausdrücke ein

Der folgende Code:

<code class="php">$db     = new mysqli('x', 'xxx', 'xxxxx');
$db->select_db('xxx');
$db->set_charset('utf8mb4');

//这里是一个emoji表情
$contents = <<<EOT
"\ud83d\udca5"
EOT;

$contents = json_decode($contents). "hello";
echo $contents, "\t\n";

$sql    = "INSERT INTO `utf8mb4`(`contents`) VALUES('$contents')";
echo $sql, "\t","\n";
$db->query($sql);
print_r($db->error_list);
echo "\t\n";
exit();</code>

Aber nach der Lagerung ist es ein ?wie unten gezeigt:

MYSQL utf8mb4 fügt verstümmelte Emoji-Ausdrücke ein

Auf der Suche nach einer Lösung.

Das ist richtig.
Lassen Sie mich über die Prämisse sprechen. Der Unterschied zwischen utf8mb4 und utf8 besteht darin, dass utf8 nur 3-Bit-Bytecode zum Speichern von Daten verwendet, während utf8mb4 4-Bit-Bytecode zum Speichern von Daten verwendet.
Der Emoji-Ausdruck ist ein 4-Bit-Bytecode, der durch den vorherigen Absatz maskiert wurde. Es ist selbst ein unlesbares Zeichen, daher wird „?“ im Datenbank-Client angezeigt.
Emoji-Ausdrücke werden dort angezeigt, wo das Frontend Emoji unterstützt.

Stellen Sie fest, ob der Client utf8mb4 unterstützt. Verwenden Sie am besten festgelegte Namen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn