Heim > Artikel > Backend-Entwicklung > MYSQL utf8mb4 fügt verstümmelte Emoji-Ausdrücke ein
Über das Problem des MYSQL utf8mb4-Stringsatzes.
Die Tabellenstruktur ist wie folgt:
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:
Auf der Suche nach einer Lösung.
Über das Problem des MYSQL utf8mb4-Stringsatzes.
Die Tabellenstruktur ist wie folgt:
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:
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.