ホームページ  >  記事  >  データベース  >  MySQL で絵文字が消えてしまうのはなぜですか?

MySQL で絵文字が消えてしまうのはなぜですか?

DDD
DDDオリジナル
2024-11-06 20:25:02329ブラウズ

Why are my Emojis Disappearing in MySQL?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。