Mysqlに絵文字をINSERTしようとすると?に変換されます
INSERT文を打ち込む時点で既に?となっています
例えば、
INSERT INTO test (text) VALUES('✨');
というSQLはコンソール上では
INSERT INTO test (text) VALUES('?');
のように表示され、レコードにも?で登録されます
データベースとテーブルについて文字コードを調べたところ、以下のようになりました
データベースを選択した状態でコマンドshow variables like '%char%';に対し、
character_set_client : utf8mb4
character_set_connection : utf8mb4
character_set_database : utf8mb4
character_set_filesystem : binary
character_set_results : utf8mb4
character_set_server : latin1
character_set_system : utf8
character_sets_dir : [charsetsへのパス]
show create table test; に対し、
| test | CREATE TABLE test
(
id
int(20) NOT NULL AUTO_INCREMENT,
text
varchar(100) NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4
となっています
なお、charcter_set_serverがlatin1になっているのが気になったので調べたところ、
こちらの記事にデータベース作成時に作用するものであるとあった為、今は関係ないものと判断しています
原因、或いは解決法をご存じの方はご教示お願いします
環境
Mysql 5.7.22
接続にEC2のlinux2を使用しています
回答2件
あなたの回答
tips
プレビュー