質問編集履歴
1
chcpの手順を付け加えて再検証
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,21 +1,18 @@
|
|
1
|
-
コマンドラインからXAMPPのMariaDBに接続し、テーブルを作成して漢字を含んだレコードをinsertしました。
|
2
|
-
|
1
|
+
下記の要領でテーブルにレコードを追加したのですが、文字化けの原因がわかりません。
|
2
|
+
何が原因でどうしたら文字化けがなおるのか教えていただけませんでしょうか。
|
3
|
+
よろしくお願いいたします。
|
3
4
|
|
5
|
+
環境
|
6
|
+
OS:Windows10
|
7
|
+
DB:MariaDB(XAMPP for Windows)
|
8
|
+
|
9
|
+
【実行手順】
|
10
|
+
1) コードページを65001に変更
|
4
11
|
```
|
5
|
-
+----+-----------+------------+
|
6
|
-
|
12
|
+
Active code page: 65001
|
7
|
-
+----+-----------+------------+
|
8
|
-
| 1 | ?i?c | ???L |
|
9
|
-
| 2 | ?i?c | ???L |
|
10
|
-
+----+-----------+------------+
|
11
13
|
```
|
12
|
-
|
13
|
-
|
14
|
+
2) MariaDBにルートユーザーでログインし、MariaDBの文字コードを確認
|
14
|
-
何が原因でどうしたら文字化けがなおるのか教えていただけませんでしょうか。
|
15
|
-
よろしくお願いいたします。
|
16
|
-
|
17
15
|
```sql
|
18
|
-
(MySQLの文字コード確認)
|
19
16
|
show variables like 'character_set%';
|
20
17
|
+--------------------------+--------------------------------+
|
21
18
|
| Variable_name | Value |
|
@@ -28,26 +25,65 @@
|
|
28
25
|
| character_set_server | utf8 |
|
29
26
|
| character_set_system | utf8
|
30
27
|
```
|
28
|
+
3) sampledbというDBを作成し、DBの文字コードを確認
|
31
29
|
```sql
|
32
|
-
|
30
|
+
MariaDB [(none)]> create database sampledb character set utf8 collate utf8_general_ci;
|
31
|
+
|
33
|
-
show create database sampledb;
|
32
|
+
MariaDB [(none)]>show create database sampledb;
|
34
33
|
+----------+-------------------------------------------------------------------+
|
35
34
|
| Database | Create Database |
|
36
35
|
+----------+-------------------------------------------------------------------+
|
37
36
|
| sampledb | CREATE DATABASE `sampledb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
|
38
37
|
+----------+-------------------------------------------------------------------+
|
39
38
|
```
|
39
|
+
4) memberテーブルを作成し、テーブルの文字コードを確認
|
40
40
|
```sql
|
41
|
+
MariaDB [(none)]> use sampledb;
|
42
|
+
|
43
|
+
MariaDB [sampledb]> CREATE TABLE member(
|
44
|
+
-> id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
45
|
+
-> last_name VARCHAR(50),
|
46
|
+
-> first_name VARCHAR(50),
|
47
|
+
-> age TINYINT UNSIGNED,
|
41
|
-
|
48
|
+
-> PRIMARY KEY(id)
|
49
|
+
-> );
|
50
|
+
|
42
51
|
MariaDB [sampledb]> show create table member \G
|
52
|
+
|
43
53
|
*************************** 1. row ***************************
|
44
54
|
Table: member
|
45
55
|
Create Table: CREATE TABLE `member` (
|
46
56
|
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
47
57
|
`last_name` varchar(50) DEFAULT NULL,
|
48
58
|
`first_name` varchar(50) DEFAULT NULL,
|
59
|
+
`age` tinyint(3) unsigned DEFAULT NULL,
|
49
60
|
PRIMARY KEY (`id`)
|
50
|
-
) ENGINE=InnoDB
|
61
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
51
|
-
|
62
|
+
```
|
52
63
|
|
64
|
+
5) レコードを挿入し、selectでレコード内容を表示。文字化けを確認。
|
65
|
+
```sql
|
66
|
+
MariaDB [sampledb]> INSERT INTO member(last_name,first_name,age)
|
67
|
+
-> VALUES('田中','一郎',21);
|
68
|
+
|
69
|
+
MariaDB [sampledb]> select * from member;
|
70
|
+
+----+-----------+------------+------+
|
71
|
+
| id | last_name | first_name | age |
|
72
|
+
+----+-----------+------------+------+
|
73
|
+
| 1 | ?? | ?? | 21 |
|
74
|
+
+----+-----------+------------+------+
|
75
|
+
```
|
76
|
+
|
77
|
+
ちなみにwork.sqlというファイルに上記内容を記述し、コマンドプロンプトからSQLを読み込ませると、文字化けしていませんでした。
|
78
|
+
```sql
|
79
|
+
>mysql -u root -p < C:\temp\work.sql
|
80
|
+
|
81
|
+
DBにログイン
|
82
|
+
|
83
|
+
MariaDB [sampledb]> select * from member;
|
84
|
+
+----+-----------+------------+------+
|
85
|
+
| id | last_name | first_name | age |
|
86
|
+
+----+-----------+------------+------+
|
87
|
+
| 1 | 田中 | 一郎 | 21 |
|
88
|
+
|
53
89
|
```
|