Mysql は utf8mb4 文字セットをサポートしています。つまり、絵文字の保存がすでにサポートされています。
選択する場所の条件として絵文字を使用したいのですが、可能ですか?それを達成するにはどうすればよいでしょうか?
エディターで入力できる限り、クエリと他の文字に違いはありません
mysqlで検索するにはchrome + phpmyadminを使用します:
select * from `table` where `ニックネーム` like Convert(_utf8 '%
落ち込んでいます。絵文字を送信しましたが、傍受されました。代わりにフォーラムでサポートされている絵文字を使用します。
Chrome + phpmyadmin を使用しますmysql で検索するには:
select * from `table` where ` Nickname` like Convert(_utf8 '%%' USING utf8mb4) COLLATE utf8mb4_general_ci
結果は空ですが、ニックネームにこの絵文字が含まれるレコードが確実に存在します
デバイス。手元にある絵文字は絵文字をサポートしていないため、正確な表現はできません
ただし、原則は次のようになります。
フィールドが utf8mb4_general_ci の場合、フィールド内の絵文字は 4 バイトの utf-8 で存在します
可能であれば絵文字を文字列に入力すると、クエリ ステートメントは
select * from `table` where `nickname` like '%$txt%' になります
絵文字を指定したいが入力できない場合は、16 進数の内部コードを使用できますたとえば、
$ch = "xf0x9fx98x84";
絵文字比較テーブルがない場合は、絵文字をサポートするデバイスでそれを検出するための小さなプログラムを作成します。 Chrome には絵文字を入力するための拡張機能がインストールされており、比較テーブルもあります。select * from `table` where `nickname` like '%xf0%'; も試してみましたが、結果はまだ空です。理由はわかります
奇妙なのは、phpmyadmin は 4 バイトの絵文字を見て、ライブラリから直接エコーを読み込むと、3 バイトの絵文字が正常に表示されることです。 mysql がすでに 4 バイトの絵文字をサポートしていることを証明しています。 つまり、疑問符は phpmyadmin のためだけです
フィールドは utf8mb4 ですが、phpmaiadmin は utf- です。 8. エンコーディングを変換できない場合は、当然疑問符になります
テキスト モードでは xf0 が単独で存在しないため、ニックネームは BINARY であることを宣言する必要があります。ニックネーム like '%xf0%'
select * from `table` where BINARY `nickname` like '%xf0 %'
; 。 。
select * from `table` where BINARY `nickname` like '%whole emoji%'
以上です、xu の熱心なサポートに感謝します