テーブルをutf8mb4
に設定していると単純に推測します。 、ただし、接続エンコーディングはutf8
に設定されています 。 utf8mb4
に設定する必要があります それ以外の場合、MySQLは保存されたutf8mb4
を変換します utf8
へのデータ 、後者は「高」Unicode文字をエンコードできません。 (はい、それはMySQLの特異性です。)
生のMySQL接続では、次のようになります。
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;
PHPからMySQLに接続する方法(mysql、mysqli、またはPDO)に応じて、これをクライアントの最適な方法に適合させる必要があります。
本当に明確にするために(はい、mysql_
を使用します 簡単にするための拡張機能です。自宅では行わないでください):
mysql_connect(...);
mysql_select_db(...);
mysql_set_charset('utf8mb4'); // adapt to your mysql connector of choice
$r = mysql_query('SELECT * FROM `my_table`');
var_dump(mysql_fetch_assoc($r)); // data will be UTF8 encoded