MySQL 文字エンコーディングと絵文字ストレージ
顔文字を PHP バックエンドに送信し、MySQL に挿入する iPhone アプリケーションがあります。データベース。ただし、挿入が成功すると、保存された値は空白で表示されます。
テキストのみの挿入は成功しますが、絵文字が含まれる場合はテキストのみが挿入されます。フィールド タイプを (画像データに対応するために) ブログに変更するという提案は、時折非絵文字が挿入されることとストレージ要件が小さいため、不適切であることが判明しました。
解決策: MySQL 文字セットの互換性
問題は MySQL の文字エンコーディングにあります。 iOS 絵文字は主に、Unicode テーブルの Basic Multilingual Plane (BMP) を超えるコード ポイントを利用します。たとえば、「口を開けて目を微笑む笑顔」の絵文字は、U 1F604 にあります。
MySQL バージョン 5.5 より前のバージョンでは、BMP の UTF-8 のみがサポートされており、ストレージは U FFFF の下の文字に制限されています。その結果、MySQL は U 1F604 絵文字やその他の「高度な文字」を保存できません。
これを解決するには、MySQL 5.5 を使用し、列の文字セットとして utf8mb4 (本物の UTF-8)、utf16、または utf32 を選択します。さらに、PHP とデータベース間の MySQL 接続で同じ文字セットが使用されていることを確認してください。
MySQL バージョン 5.5 より前の場合は、「文字」に関係なく生のバイトを格納する BLOB 列タイプを使用してください。これにより絵文字を保存できるようになりますが、テキスト検索とインデックス作成の効率が損なわれます。
以上がMySQL で絵文字が消えてしまうのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。