關於MYSQL utf8mb4字串集的問題。
表結構如下:
如下碼:
<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>
但是入庫後,是一個?
如下圖:
求解決。
關於MYSQL utf8mb4字串集的問題。
表結構如下:
如下碼:
<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>
但是入庫後,是一個?
如下圖:
求解決。
這樣是對的。
說下前提,utf8mb4和utf8的差別就是utf8才用3位元組碼儲存數據,而utf8mb4用4位元組碼儲存資料。
emoji表情是4位元組碼透過前段轉義出來的,它本身是不可讀的字符,所以在資料庫客戶端中會顯示「?」。
在前端支援emoji的地方就會顯示emoji表情。
確定下客戶端是否支援utf8mb4,最好使用的時候 set names下。