質問編集履歴

1

chcpの手順を付け加えて再検証

2018/07/14 01:22

投稿

awa
awa

スコア34

test CHANGED
File without changes
test CHANGED
@@ -1,28 +1,4 @@
1
- コマンドラインからXAMPPのMariaDBに接続し、テーブルを作成して漢字を含んだレコードをinsertしました。
2
-
3
- selectでテーブルの中身を確認したところ、コマンドライン上では下記のような表示になりました。
4
-
5
-
6
-
7
- ```
8
-
9
- +----+-----------+------------+
10
-
11
- | id | last_name | first_name |
12
-
13
- +----+-----------+------------+
14
-
15
- | 1 | ?i?c | ???L |
16
-
17
- | 2 | ?i?c | ???L |
18
-
19
- +----+-----------+------------+
20
-
21
- ```
22
-
23
-
24
-
25
- そこで下記の要領で文字コードを確認ていきましたが、utf-8になっており原因がわかりません。
1
+ 下記の要領でテーブルにレコードを追加したのですが、文字化けの原因がわかりません。
26
2
 
27
3
  何が原因でどうしたら文字化けがなおるのか教えていただけませんでしょうか。
28
4
 
@@ -30,9 +6,27 @@
30
6
 
31
7
 
32
8
 
9
+ 環境
10
+
11
+ OS:Windows10
12
+
13
+ DB:MariaDB(XAMPP for Windows)
14
+
15
+
16
+
17
+ 【実行手順】
18
+
19
+ 1) コードページを65001に変更
20
+
21
+ ```
22
+
23
+ Active code page: 65001
24
+
25
+ ```
26
+
27
+ 2) MariaDBにルートユーザーでログインし、MariaDBの文字コードを確認
28
+
33
29
  ```sql
34
-
35
- (MySQLの文字コード確認)
36
30
 
37
31
  show variables like 'character_set%';
38
32
 
@@ -58,11 +52,15 @@
58
52
 
59
53
  ```
60
54
 
55
+ 3) sampledbというDBを作成し、DBの文字コードを確認
56
+
61
57
  ```sql
62
58
 
63
- DBの文字コード確認)
59
+ MariaDB [(none)]> create database sampledb character set utf8 collate utf8_general_ci;
64
60
 
61
+
62
+
65
- show create database sampledb;
63
+ MariaDB [(none)]>show create database sampledb;
66
64
 
67
65
  +----------+-------------------------------------------------------------------+
68
66
 
@@ -76,11 +74,33 @@
76
74
 
77
75
  ```
78
76
 
77
+ 4) memberテーブルを作成し、テーブルの文字コードを確認
78
+
79
79
  ```sql
80
80
 
81
+ MariaDB [(none)]> use sampledb;
82
+
83
+
84
+
85
+ MariaDB [sampledb]> CREATE TABLE member(
86
+
87
+ -> id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
88
+
89
+ -> last_name VARCHAR(50),
90
+
91
+ -> first_name VARCHAR(50),
92
+
93
+ -> age TINYINT UNSIGNED,
94
+
81
- (テーブルの文字コード確認)
95
+ -> PRIMARY KEY(id)
96
+
97
+ -> );
98
+
99
+
82
100
 
83
101
  MariaDB [sampledb]> show create table member \G
102
+
103
+
84
104
 
85
105
  *************************** 1. row ***************************
86
106
 
@@ -94,11 +114,63 @@
94
114
 
95
115
  `first_name` varchar(50) DEFAULT NULL,
96
116
 
117
+ `age` tinyint(3) unsigned DEFAULT NULL,
118
+
97
119
  PRIMARY KEY (`id`)
98
120
 
99
- ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
121
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8
100
122
 
123
+ ```
124
+
125
+
126
+
127
+ 5) レコードを挿入し、selectでレコード内容を表示。文字化けを確認。
128
+
129
+ ```sql
130
+
131
+ MariaDB [sampledb]> INSERT INTO member(last_name,first_name,age)
132
+
133
+ -> VALUES('田中','一郎',21);
134
+
135
+
136
+
137
+ MariaDB [sampledb]> select * from member;
138
+
139
+ +----+-----------+------------+------+
140
+
141
+ | id | last_name | first_name | age |
142
+
143
+ +----+-----------+------------+------+
144
+
145
+ | 1 | ?? | ?? | 21 |
146
+
147
+ +----+-----------+------------+------+
148
+
149
+ ```
150
+
151
+
152
+
153
+ ちなみにwork.sqlというファイルに上記内容を記述し、コマンドプロンプトからSQLを読み込ませると、文字化けしていませんでした。
154
+
155
+ ```sql
156
+
157
+ >mysql -u root -p < C:\temp\work.sql
158
+
159
+
160
+
161
+ DBにログイン
162
+
163
+
164
+
165
+ MariaDB [sampledb]> select * from member;
166
+
167
+ +----+-----------+------------+------+
168
+
169
+ | id | last_name | first_name | age |
170
+
171
+ +----+-----------+------------+------+
172
+
101
- 1 row in set (0.00 sec)
173
+ | 1 | 田中 | 一郎 | 21 |
102
174
 
103
175
 
104
176