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

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

WBOY
Freigeben: 2016-08-04 09:21:14
Original
1600 Leute haben es durchsucht

Ü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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage