1

MySQL のテーブルにいくつかの絵文字を挿入しようとしていますが、値は疑問符 (????) として保存されます。

utf8mb4適切なエンコーディングでデータベースを作成するようにしました。

ここに画像の説明を入力 ここに画像の説明を入力

mysql> describe users;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(191) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

次に、MySqlが絵文字を理解できるかどうかを確認しようとしたので、次のようにしました。

mysql> select '';

+------+
|      |
+------+
|      |
+------+
1 row in set (0.00 sec)

それから私はこれをしました:

mysql> insert into users (name) values ('');
Query OK, 1 row affected, 1 warning (0.05 sec)
mysql> select * from users;
+----+------------+
| id | name       |
+----+------------+
| 21 | فاضل       |
| 30 | سلاحف      |
| 46 | ????       |
| 47 | ????       |
| 48 | ????       |
| 49 | ????       |
+----+------------+
6 rows in set (0.01 sec)

それを修正するために何をすべきかわかりません..

**編集**:コメントで要求されたように、次のコマンドを実行しました:

mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+-------------------------+
| Variable_name            | Value                   |
+--------------------------+-------------------------+
| character_set_client     | utf8                    |
| character_set_connection | utf8                    |
| character_set_database   | utf8mb4                 |
| character_set_filesystem | binary                  |
| character_set_results    | utf8                    |
| character_set_server     | utf8                    |
| character_set_system     | utf8                    |
| character_sets_dir       | /static/share/charsets/ |
+--------------------------+-------------------------+
8 rows in set (0.00 sec)
4

1 に答える 1

1

接続は utf8 用にセットアップされています。utf8mb4 用にセットアップする必要があります。

どのように設定しましたか?いずれかに該当するものに変更してください。

  • SET NAMES utf8mb4
  • PDO(... charset=utf8mb4)
  • mysqli::set_charset('utf8mb4')

絵文字は 4 バイトの utf8 コードであるため、4 つの疑問符があります。

于 2015-07-07T07:11:11.807 に答える