この記事の動作環境: Windows7 システム、PHP7.1 バージョン、Dell G3 コンピューターphp emoji mysql エラーは、データベースが絵文字をサポートしていないためです。解決策は次のとおりです: 1. 文字セットを utfmb4 に変更します; 2. 絵文字式をエスケープし、呼び出し時に変換して戻します。
php emoji mysql エラー問題を解決するにはどうすればよいですか?
絵文字表現とその絵文字表現の後ろのコンテンツは通常は挿入できません。 解決策: 方法 1: インターネットでデータベースの文字セットのエンコーディングを変更するという情報を調べて、文字セットを utfmb4 に変更してみてください。別のデータを挿入して、式が実際にデータベースに保存されていることを確認します。
データベースの文字セットが変更された場合でも、PHP プログラムはそれに応じて文字セットを変更する必要があることに注意してください。そうでなければ、まだ???。
定義方法は次のとおりです: mysqli_query($conn,"SET NAMES UTF8MB4");方法 2: 絵文字表現をエスケープし、呼び出し時に変換します。戻る。これは、エスケープ用とアンチエスケープ用の 2 つの関数を定義することに他なりません。 //絵文字エスケープ
function en_emoji($str){ $en_str=''; $length=mb_strlen($str,'utf-8'); for($i=0;$i=4){ $en_str.=''.rawurlencode($tmp_str).''; }else{ $en_str.=$tmp_str; } } return $en_str; } //反转义为emoji function de_emoji($str){ $de_str=preg_replace_callback('|(.*?)|',function($matches){ return rawurldecode($matches[1]); },$str); return $de_str; }利用方法も非常に簡単で、データベースにデータを保存するときにエスケープし、読み出し・表示するときに逆にします。 en_emoji($str) の結果は次のようになります:
読み取りおよび表示するときに de_emoji($str) を使用するだけです。
2 つのソリューションの比較: 方法 1: データベースだけでなくプログラム コードも含めて文字セットを変更します。しかし、なんというか、データベースは将来 utf8mb4 にアップグレードされる可能性があります。 方法 2: 関数メソッドを使用すると、プログラムを変更するだけで済み、データベースに触れる必要はありません。 2つの機能が実装されています。ただ、データベースの内容と比べると、若干文字化けしているような気がします。そして、この記事を書いているときに、データ保存時に en_emoji を使用したため、すべての表現がエスケープコードになっていることに気づき、記事の内容を表示するときにアンチエスケープ de_emoji を使用したところ、今度は、当初作成したエスケープ内容が後になって判明しました。私の記事で表現したかったことも逃げられていました。上記の結果のパフォーマンスを置き換えるには画像しか使用できないことがわかります。 結論: 絵文字の使用を減らします。もちろん、データベースを自分で作ってプログラムを書く場合は、方法 1 で utf8mb4 を設定する方が完璧です。しかし、正直に言うと、私はこの記事を書いているときだけエスケープ機能を使用しており、無用なトラブルを避けるために、書いた後はエスケープ機能を停止しました。 推奨: 「PHP ビデオ チュートリアル
」以上がphp絵文字mysqlエラー問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。