9

私たちは、絵文字を iPhone からサーバー側の PHP に送信し、MySQL テーブルに挿入する iPhone アプリを開発しています。サーバーサイドの仕事をしています。

しかし、挿入ステートメントが正常に実行された後、挿入された値は空白になります。
フィールド(varchar)に正しく挿入できるのはテキストですが、絵文字を含める
と、テキストだけが挿入され、絵文字が自動的に切り取られます。

画像データを保存できるように、フィールド タイプをブログに設定することについて誰かアドバイスをください。
ただし、挿入される値は必ずしも絵文字ケースを含むとは限らず、サイズも小さいです。

*値の挿入には mysql_real_escape_string を使用しています。

4

2 に答える 2

23

ほとんどの iOS 絵文字は、Unicode テーブルの Basic Multilingual Plane より上のコード ポイントを使用します。たとえば、(SMILING FACE WITH OPEN MOUTH AND SMILING EYES) は U+1F604 にあります。

OS X キャラクター ビューア

次に、 http://dev.mysql.com/doc/refman/5.5/en/charset-unicode.htmlを参照してください。

バージョン 5.5 より前の MySQL は、U+0000 と U+FFFF の間の文字を含む BMP の UTF-8 のみをサポートします (つまり、実際の UTF-8 のサブセットのみ; MySQL は実際の UTF-8 でutf8はありません)。コード ポイント U+1F604 または他の同様の「上位文字」に文字を格納することはできません。MySQL 5.5+ はutf8mb4(実際の UTF-8) とutf16をサポートしておりutf32、これらの文字をエンコードできます。MySQL 5.5 以降を使用している場合は、これらの列文字セットのいずれかを使用し、PHP との間の接続エンコーディングに同じ文字セットを使用していることを確認してください。MySQL < 5.5 を使用している場合は、BLOB列タイプを使用する必要があります。そのタイプは、その中の「文字」を気にせずに生のバイトを格納します。欠点は、テキストを効率的に検索したり索引付けしたりできないことです。

于 2012-03-01T02:27:24.337 に答える
2

一部の絵文字文字は、3バイトのコードポイントを使用してエンコードされており、mysqlは3バイトの文字を格納できるため、古い非ブロブのmysql構成で機能します。何らかの理由でmysqlをアップグレードしたり、blobを使用したりできない場合は、4バイトのコードポイントをスクラブして3バイトのコードポイントを保持できます。

お使いのコンピューターに絵文字機能がある場合は、3バイトのiOS絵文字文字のリストを次に示します。

◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇★ ㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌©®™

于 2012-05-02T15:32:45.493 に答える