sql >> データベース >  >> RDS >> Mysql

究極の絵文字エンコード方式

    MySQLのutf8 文字セットは実際にはUTF-8ではありません 、基本プレーン(U + FFFFまでの文字)のみをサポートするUTF-8のサブセットです。ほとんどの絵文字は、U+FFFFよりも高いコードポイントを使用します。 MySQLのutf8mb4 実際のUTF-8 これらすべてのコードポイントをエンコードできます。 MySQL以外には、「utf8mb4」のようなものはなく、UTF-8だけがあります。だから:

    繰り返しますが、「utf8mb4」のようなものはありません。クライアントがUTF-8でエンコードされたデータを送信する場合、HTTPPOSTリクエストはすべてのrawバイトをサポートします。

    はい。

    いいえ、生のUTF-8(utf8mb4を使用してください )聖なるものすべてのために。

    さて、あなたの問題があります。 MySQLのutf8を介してデータをチャネリングする charsetは、U+FFFFより上の文字をすべて破棄します。 utf8mb4を使用する MySQLを介してずっと。

    それが何を意味するのかを正確に指定する必要があります。 PHPのJSON関数は、有効なUTF-8である限り、任意のUnicodeコードポイントを問題なく処理できるはずです。

    echo json_encode('😀');
    "\ud83d\ude00"
    
    echo json_decode('"\ud83d\ude00"');
    😀
    


    1. MySQLで最も高い値を持つ行を取得します

    2. phpはmysqlの順序よりも優れていますか?

    3. Node.jsでのSQLインジェクションの防止

    4. MySQL unix時間が32ビットの符号なし整数の制限に達しないのはなぜですか?