2012-04-14 16 views
8

私は絵文字に関するすべての話題を読み終えたので、私はいくつかの助けを求めることになっています。 質問はほぼ同じようです:iPhoneのAppをPHPの絵文字を使ってMySQL DBに送ってきました。 "傘"と "雲"のようなレコードのシンボルを見ることができます。その他)。MySQLとPHPの絵文字:なぜいくつかのシンボルは他にはありませんか?

いくつかの理由はありますか?

  • MySQLの照合:utf8mb_unicode_ci
  • 表照合:utf8mb_unicode_ci
  • フィールド、VARCHAR、照合:utf8mb_unicode_ci

PHPセットアップ:レコードの内部に示していない

mysql_query("SET CHARACTER SET utf8mb4"); 
    mysql_query("SET NAMES utf8mb4"); 

シンボル疑問符 "?"として表示されます。

答えて

11

一部の絵文字は3バイトでエンコードされます。お使いのコンピュータで絵文字がサポートされている場合、ここに3バイトの絵文字があります:

☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡☎♠♥♣〽☕⛪⛺⛲⛵✈⛽⚠ ♨1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣#⃣⬆⬇⬅➡↗↖↘↙◀▶⏪⏩♿㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌©®™

残りは4つのバイトを使用してエンコードされていますmysqlをutf8mb4に更新しないかぎりは動作しません。何らかの形でutf8mb4に完全にアップグレードしていないようです。

+0

ありがとう、ジェイク、私はあなたの方向で検索します。今私は、ターゲットフィールドとテーブルを適切な照合順序で変換したと確信していますが、何かを逃してしまいます。私はこのトピックを更新します。 Thanx – Fabrizio

+0

私はあなたが3バイトの絵文字が大丈夫と表示されていることを確認しました。私が見逃しているのは、照合順序を変更する必要がある場所です。絵文字を記録しなければならないフィールドには、utf8mb4_unicode_ci照合があります。そのフィールドを含むテーブルにはutf8mb4_unicode_ci照合があります。一般設定(phpMyAdmin)では、MySQL照合はutf8_general_ciであり、utf8mb4_unicode_ciに変更しようとすると、自動的に前の設定に戻るようです。このような理由で問題があるかどうかは分かりません。私は検索を続けます。 – Fabrizio

+3

@Fabrizio私は[utf8からutf8mb4へのアップグレード方法の詳細なガイド](http://mathiasbynens.be/notes/mysql-utf8mb4)を書いたことがあります。 –

関連する問題