前提・実現したいこと
コマンドプロンプト上でMySQLを操作すると、日本語入力した部分が文字化けするか、入力自体を受け付けません。これを解決するには、どこを変更すれば良いのでしょうか?
発生している問題・エラーメッセージ
■MySQL(MariaDB)の書式
MariaDB [(none)]> show variables like '%char%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+
■コマンドプロンプトの書式
chcp → 現在のコードページ : 932
この状態で既存のデータを表示すると、日本語部分(2行目・name)が文字化けします。
MariaDB [shop_items]> SELECT * FROM items;
+----+-----------+-------+-------+
| no | name | price | stock |
+----+-----------+-------+-------+
| 1 | orange | 150 | 30 |
| 2 | 繝ャ繝「繝ウ | 100 | 15 |
+----+-----------+-------+-------+
ちなみに構造は以下の通り。
MariaDB [shop_items]> describe items;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| no | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
| stock | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
また、新たにレコードを追加しようとすると、以下の通りエラーとなります。
エラーメッセージ MariaDB [shop_items]> INSERT INTO items(name,price,stock) VALUES ('メロン',500,20); ERROR 1366 (22007): Incorrect string value: '\x83\x81\x83\x8D\x83\x93' for column `shop_items`.`items`.`name` at row 1 MariaDB [shop_items]>
試したこと
chcp 65001
上記により、コードページを「utf-8」にすると、既存の日本語部分は正しく表示されるものの、新たに入力した日本語は、文字化けします(入力エラーにはなりません)。
MariaDB [shop_items]> insert into items(name,price,stock) values ('メロン',300,10);
Query OK, 1 row affected (0.011 sec)
MariaDB [shop_items]> select * from items;
+----+-----------+-------+-------+
| no | name | price | stock |
+----+-----------+-------+-------+
| 1 | orange | 150 | 30 |
| 2 | レモン | 100 | 15 |
| 3 | PPP | 300 | 10 |
+----+-----------+-------+-------+
この設定も一時的なもので、改めてMySQLを立ち上げると、文字のコードページは「932」に戻ってしまいます。
補足情報(FW/ツールのバージョンなど)
MySQL Server 5.7
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/29 09:06
2021/06/29 09:08