teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

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

2018/07/14 01:22

投稿

awa
awa

スコア34

title CHANGED
File without changes
body CHANGED
@@ -1,21 +1,18 @@
1
- コマンドラインからXAMPPのMariaDBに接続し、テーブルを作成して漢字を含んだレコードをinsertしました。
2
- selectでテーブルの中身確認したところ、コマンドライン上は下記ような表示になりました
1
+ 下記の要領でテーブルにレコード追加したすが、文字化け原因がわかりません
2
+ 何が原因でどうしたら文字化けがなおるのか教えていただけませんでしょうか。
3
+ よろしくお願いいたします。
3
4
 
5
+ 環境
6
+ OS:Windows10
7
+ DB:MariaDB(XAMPP for Windows)
8
+
9
+ 【実行手順】
10
+ 1) コードページを65001に変更
4
11
  ```
5
- +----+-----------+------------+
6
- | id | last_name | first_name |
12
+ Active code page: 65001
7
- +----+-----------+------------+
8
- | 1 | ?i?c | ???L |
9
- | 2 | ?i?c | ???L |
10
- +----+-----------+------------+
11
13
  ```
12
-
13
- そこ下記要領で文字コードを確認していきましたが、utf-8になっており原因がわかりません。
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
- (DBの文字コード確認)
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 AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
61
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8
51
- 1 row in set (0.00 sec)
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
  ```