あなたが持っているのはEXTRATERRESTRIAL ALIEN (U+1F47D)
およびBROKEN HEART (U+1F494)
これは基本多言語面にはありません。 Javaでは1文字として表現することもできません。"👽💔".length() == 4
。それらは間違いなくヌル文字ではなく、それらをサポートするフォントを使用していない場合は正方形が表示されます。
MySQLのutf8
基本多言語面のみをサポートし、utf8mb4
を使用する必要があります 代わりに
:
補助文字の場合、utf8は文字をまったく格納できませんが、utf8mb4はそれを格納するために4バイトを必要とします。 utf8は文字をまったく格納できないため、補助文字inutf8列はなく、古いバージョンのMySQLからutf8データをアップグレードするときに、文字の変換やデータの損失について心配する必要はありません。
したがって、これらの文字をサポートするには、MySQLが5.5以上であり、utf8mb4
を使用する必要があります。 どこにでも。接続エンコーディングはutf8mb4
である必要があります 、文字セットはutf8mb4
である必要があります 照合はutf8mb4
である必要があります 。 Javaの場合は、まだ"utf-8"
です。 、しかしMySQLには区別が必要です。
使用しているドライバーはわかりませんが、ドライバーに依存しない接続文字セットを設定する方法は、クエリを送信することです:
SET NAMES 'utf8mb4'
接続した直後。
14.14:Connector / Jで4バイトUTF8、utf8mb4を使用するにはどうすればよいですか?
Connector / Jで4バイトのUTF8を使用するには、MySQLサーバーをcharacter_set_server=utf8mb4で構成します。その後、Connector / Jは、characterEncodingにない限り、その設定を使用します 接続文字列に設定されています 。これは、文字セットの自動検出に相当します。
列とデータベースも調整します:
var1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL
繰り返しになりますが、utf8mb4をサポートするには、MySQLのバージョンが比較的最新である必要があります。