mysql に保存されている絵文字表現が ??? になった ネットの情報によると、mysql の文字セットを utf8mb4 に変更しましたが、依然として無効で文字化けして表示されます。 。誰かこれに遭遇したことがありますか?
絵文字表現は utf-16 エンコードに拡張されています
絵文字表現のテキストを含む Base64 エンコード文字列を投稿してください
、問題の解決に役立つかどうか確認してください
絵文字表現 これは拡張 utf-16 エンコーディングです
絵文字表現のテキストを含む Base64 エンコード文字列を投稿して、問題の解決に役立つかどうかを確認できます
テキストに絵文字がそれほど多くないことを考慮して、
$text = base64_decode('8J+YhPCfmIM=');echo $text = preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) { return '@E' . base64_encode($r[0]);}, $text);@ を保存する前に正規表現に置き換えることができます。 E8J+YhA==@E8J+Ygw= =
$s = preg_replace_callback('/@E(.{6}==)/', function($r) {return base64_decode($r[1]);}, '@E8J+YhA==@E8J+Ygw==');var_dump(base64_decode('8J+YhPCfmIM=') == $s);bool(true)
本文に絵文字が少ないことを考慮して、正規表現を使用できます 置き換えて保存します
$text = base64_decode('8J+YhPCfmIM=');echo $text = preg_replace_callback('/[\xf0-\xf7].{3}/', function($r) { return '@E' . base64_encode($r[0]);}, $text);@E8J+YhA==@E8J+Ygw==
$s = preg_replace_callback('/@E(.{6}==)/', function($r) {return base64_decode($r[1]);}, '@E8J+YhA==@E8J+Ygw==');var_dump(base64_decode('8J+YhPCfmIM=') == $s);bool(本当)