LoginSignup
38
36

More than 5 years have passed since last update.

MySQLでの絵文字(4byte文字)対応(utf8)めもめも

Posted at

問題点

MySQL5.5以前では4byteのutf8文字列を入れることができない
⇒日本での絵文字などはこれにあたる。
⇒他の国の言語も一部ここにあたる

現象

実際に入れてみると、4byte文字を境に後ろの文字列が全て消えてしまう。すっぱりと・・・!
あい[絵文字]うえお->あい
abc[絵文字]def->abc
どんなに長い文字列も絵文字の部分から後ろが全部切れてしまうorz

CHARCODE設定

CHARCODE設定をutf-8からutf8mb4に変更

skip-character-set-client-handshake設定

skip-character-set-client-handshakeを入れるといいよ!という記事があるものの、利用環境によるかもしれない。
SQLインジェクションの脆弱性がある。
利用している環境にあわせてskip-character-set-client-handshakeを使うか、skip-character-set-client-handshakeは使わずに対応していくのがよさそう

JDBCドライバ(Connector/J)の対応

Connector/Jのバージョン5.1.12より前のバージョンでは???に文字化けしていまう問題がある
⇒バージョンを5.1.12より新しいものにする
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT)のエラーが出る。
⇒connectionCollationの設定をする
characterEncoding=UTF-8
connectionCollation=utf8mb4_general_ci


参考

MySQLで4byteのutf8文字列を入れる

JDBCドライバ(Connector/J)でutf8mb4

skip-character-set-client-handshakeパラメータについて

38
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
36