質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

5回答

14995閲覧

MySQL(MariaDB)での日本語の文字化けを解消したい

shibuchaaaan

総合スコア19

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

1グッド

3クリップ

投稿2019/04/09 07:31

編集2019/04/10 01:43

前提・実現したいこと

MySQL(MariaDB)での日本語の文字化けを解消したいです。
ネットに載っている解決法を色々試しましたが、お手上げ状態なのでこの環境での解決策をご教示いただけると助かります。

###環境
Windows10
XAMPP 7.2.6
MySQL Ver 15.1 Distrib 10.1.33-MariaDB, for Win32
※SQL文はコマンドプロンプトで打ち込んでいます

発生している問題・エラーメッセージ

コマンドプロンプトからSQL文でINSERTすると日本語のみ文字化けする。

SQL

1MariaDB [testdb]> insert into test(name,skill)values('みき','HTML'); 2 3MariaDB [testdb]> select* from test; 4+----+------+-------+ 5| id | name | skill | 6+----+------+-------+ 7| 1 | ・ン・ォ | HTML | 8+----+------+-------+

試したこと

①まずはDBの文字コード設定を確認。

SQL

1MariaDB [testdb]> show variables like "chara%"; 2+--------------------------+--------------------------------+ 3| Variable_name | Value | 4+--------------------------+--------------------------------+ 5| character_set_client | cp932 | 6| character_set_connection | cp932 | 7| character_set_database | utf8 | 8| character_set_filesystem | binary | 9| character_set_results | cp932 | 10| character_set_server | utf8 | 11| character_set_system | utf8 | 12| character_sets_dir | C:\xampp\mysql\share\charsets\ | 13+--------------------------+--------------------------------+

DBの設定

SQL

1MariaDB [testdb]> show create database testdb; 2+----------+-----------------------------------------------------------------+ 3| Database | Create Database | 4+----------+-----------------------------------------------------------------+ 5| testdb | CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */ | 6+----------+-----------------------------------------------------------------+

テーブルの設定

SQL

1MariaDB [testdb]> desc test; 2+-------+-------------+------+-----+---------+----------------+ 3| Field | Type | Null | Key | Default | Extra | 4+-------+-------------+------+-----+---------+----------------+ 5| id | int(11) | NO | MUL | NULL | auto_increment | 6| name | varchar(20) | YES | | NULL | | 7| skill | varchar(20) | YES | | NULL | | 8+-------+-------------+------+-----+---------+----------------+

https://qiita.com/YusukeHigaki/items/2cab311d2a559a543e3aを参考に、my.iniの[client]と[mysqld]の文字コードをutf8に書き換え。
DBの設定を確認しましたが、文字コードの設定が最初と変わっていなかったので、

③my.ini[mysql]のdefault-set-characterもutf8に書き換え。

DBの設定

SQL

1MariaDB [(none)]> show variables like "chara%"; 2+--------------------------+--------------------------------+ 3| Variable_name | Value | 4+--------------------------+--------------------------------+ 5| character_set_client | utf8 | 6| character_set_connection | utf8 | 7| character_set_database | utf8 | 8| character_set_filesystem | binary | 9| character_set_results | utf8 | 10| character_set_server | utf8 | 11| character_set_system | utf8 | 12| character_sets_dir | C:\xampp\mysql\share\charsets\ | 13+--------------------------+--------------------------------+

この状態で新たにDB作成し、INSERT

SQL

1MariaDB [(none)]> create database test2; 2 3MariaDB [test2]> create table table1(id int auto_increment,name varchar(20),skill varchar(20),index(id)); 4 5MariaDB [test2]> insert into table1(name,skill)values('みき','PHP'); 6 7MariaDB [test2]> select* from table1; 8+----+------+-------+ 9| id | name | skill | 10+----+------+-------+ 11| 1 | ?ン・? | PHP | 12+----+------+-------+

これでもダメだったので、
https://teratail.com/questions/26559を参考に、
my.iniの[mysql]default-character-setをcp932に書き換え。

DB設定

SQL

1MariaDB [(none)]> show variables like "chara%"; 2+--------------------------+--------------------------------+ 3| Variable_name | Value | 4+--------------------------+--------------------------------+ 5| character_set_client | cp932 | 6| character_set_connection | cp932 | 7| character_set_database | utf8 | 8| character_set_filesystem | binary | 9| character_set_results | cp932 | 10| character_set_server | utf8 | 11| character_set_system | utf8 | 12| character_sets_dir | C:\xampp\mysql\share\charsets\ | 13+--------------------------+--------------------------------+

設定が元通りなので意味ないと思うが、この状態で再度DB作成してINSERT

SQL

1MariaDB [(none)]> create database test3; 2MariaDB [test3]> create table table3(id int,name varchar(20),skill varchar(20)); 3MariaDB [test3]> insert into table3(id,name,skill)values(1,'みき','CSS'); 4 5MariaDB [test3]> select* from table3; 6+------+------+-------+ 7| id | name | skill | 8+------+------+-------+ 9| 1 | ・ン・ォ | CSS | 10+------+------+-------+

https://teratail.com/questions/58424を参考にset namesしてみた

SQL

1MariaDB [(none)]> set names cp932; 2 3MariaDB [(none)]> create database newone; 4MariaDB [newone]> create table tbl3(id int,name varchar(10),skill varchar(10)); 5MariaDB [newone]> insert into tbl3(id,name,skill)values(1,'みき','HTML'); 6 7MariaDB [newone]> select* from tbl3; 8+------+------+-------+ 9| id | name | skill | 10+------+------+-------+ 11| 1 | ・ン・ォ | HTML | 12+------+------+-------+

これでもダメだったので、もうお手上げ状態です…。
どこをどう変えたらよいのでしょうか…

###整理
状況を整理すると、

  • DBの文字設定全てutf9にしても直らない
  • 文字設定の中で[character_set_client],[character_set_connection],[character_set_results]がcp932でも直らない
  • ご質問に対して

1.どんな感じで文字化けしているか?
→日本語が「 ・ノ・・」「 ・・・B・E・ォ・・」のようになります。
2.プログラムは何を使ってデータを呼び出そうとしているか?
→データの呼び出し・挿入は全てコマンドプロンプト上で行っています。

ということになっています。
ご教示いただけると幸いです。

###追記
ご回答をいただき、以下を試してみました。

  • 文字コードを「utfmb4」に設定した

SQL

1MariaDB [(none)]> show variables like "chara%"; 2+--------------------------+--------------------------------+ 3| Variable_name | Value | 4+--------------------------+--------------------------------+ 5| character_set_client | utf8mb4 | 6| character_set_connection | utf8mb4 | 7| character_set_database | utf8 | 8| character_set_filesystem | binary | 9| character_set_results | utf8mb4 | 10| character_set_server | utf8 | 11| character_set_system | utf8 | 12| character_sets_dir | C:\xampp\mysql\share\charsets\ | 13+--------------------------+--------------------------------+ 14 15MariaDB [test1]> create table test2(id int,name varchar(20))default charset=utf8mb4; 16 17MariaDB [test1]> insert into test2(id,name)values(1,'みき'); 18 19MariaDB [test1]> select* from test2; 20+------+------+ 21| id | name | 22+------+------+ 23| 1 | ?ン・? | 24+------+------+
  • 文字コードをsjisに設定した

参照:https://teratail.com/questions/153238

SQL

1MariaDB [test3]> SET character_set_results = sjis; 2MariaDB [test3]> SET character_set_client = sjis; 3 4MariaDB [test3]> create table test2(id int,name varchar(20))default charset=sjis; 5MariaDB [test3]> insert into test2(id,name)values(1,'みき'); 6 7MariaDB [test3]> select* from test2; 8+------+------+ 9| id | name | 10+------+------+ 11| 1 | ??? | 12+------+------+

参考にしたURL

https://teratail.com/questions/135821
https://teratail.com/questions/124308
https://teratail.com/questions/153238
https://qiita.com/deco/items/bfa125ae45c16811536a

yodel👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKM

2019/04/09 07:39

質問を2点 1、どんな感じで文字化けしていますか。日本語が????になる、など 2、プログラムは何を使ってデータを呼び出そうとしていますか?
shibuchaaaan

2019/04/10 01:04

1.日本語が「 ・ノ・・」「 ・・・B・E・ォ・・」のようになります。 2.データの呼び出し・挿入は全てコマンドプロンプト上で行っています。
FKM

2019/04/10 01:54

そもそも、コマンドプロンプト自体、sjisは見えているのでしょうか?
shibuchaaaan

2019/04/10 10:22

文字コードをsjisにすると、入れた日本語は「????」となります。見えないですね…。
shibuchaaaan

2019/04/11 03:02

なるほど…!これは知りませんでした。ありがとうございます。 コマンドプロンプトの文字コードはShift-JISだったのですが、そのままだと何も変わらなかったのでUTF8に変えたところ、ちゃんと表示されました! 鞭ですみません…。 皆様、本当にありがとうございました。
guest

回答5

0

似たような症状の記事があったので、こちらをお試しになってみては?
(既に試されていたら申し訳ない。)
MariaDB 10.1.31とMySQL 8.0.11の文字化け対策
Windows xammp環境のMYSQL文字化け

また操作しているターミナルをgit-bash等々に変えてみてやってみるとう試しては如何でしょうか。

投稿2019/04/10 01:54

Bernadotte

総合スコア310

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shibuchaaaan

2019/04/10 10:24

ありがとうございます!明日、試してみます。
shibuchaaaan

2019/04/11 02:52

試してみましたが、変わりませんでした…。ターミナルを変えてみるほうが良いかもしれません。
guest

0

MysqlをXAMPPで動かしたいが日本語が文字化けして直らない
に同様と思われる内容の回答していますので参照してみてください

シェルの文字コードがsjisであることが原因だと思います。

投稿2019/04/09 08:33

yukky1201

総合スコア2751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shibuchaaaan

2019/04/10 01:44

ありがとうございます。 リンクの通り試してみましたが、直りませんでした…。 試した結果を追記で載せております。自分の方でも色々調べてみます。
yukky1201

2019/04/10 02:19

MariaDB [test3]> create table test2(id int,name varchar(20))default charset=sjis; のときの、default charset=sjisは無くてよいと思います。 あくまでシェルがsjisなので、表示だけsjisにすることが目的です。
shibuchaaaan

2019/04/10 10:23

なるほど!ありがとうございます。 default charset=sjis無しで作ってみましたが、同様に文字化けしたままでした。
guest

0

自己解決

FKMさんより、コマンドプロンプトでsjis自体が文字化けしている事に対して

そこから設定すべきです。Mysqlの問題以前かも知れません。

https://qiita.com/user0/items/a9116acc7bd7b70ecfb0

とコメントいただき、コマンドプロンプト自体の文字コードをUTF8に変更(テーブルの文字コードがUTF8であるため)したら無事直りました!

command

1# chcp 2現在のコード ページ: 932 3 4chcp 65001 5Active code page: 65001

SQL

1MariaDB [trainingdb]> select* from userprofile; 2+--------+--------------+-----------+-----------------+---------------+ 3| userid | name | bloodtype | origin | skill | 4+--------+--------------+-----------+-----------------+---------------+ 5| 6 | みき | O型 | 九州・沖縄 | HTML,CSS, | 6| 7 | miki | O型 | 九州・沖縄 | HTML,CSS,PHP, | 7| 8 | みき | A型 | 神奈川県 | HTML,CSS, | 8+--------+--------------+-----------+-----------------+---------------+

皆様ありがとうございました。

投稿2019/04/11 03:07

編集2019/04/11 03:11
shibuchaaaan

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

utf8ではなく、utf8mb4 に変更したらどうなりますか?
MySQLの文字コードをutf8mb4に変更

投稿2019/04/09 07:41

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shibuchaaaan

2019/04/10 01:15

リンク先と同じようにutf8mb4に変更しても、同じように文字化けしてしまいました…。 他の方法も試してみます! ありがとうございます。
guest

0

DBを作成する時にエンコードを指定しない場合、my.cnfのエンコードを参照します。
クライアントとデータベース側の文字エンコードを設定したうえで、
MySQLサービス再起動してからやってみればうまくいくと思います。

参考例
https://qiita.com/YusukeHigaki/items/2cab311d2a559a543e3a

投稿2019/04/09 07:38

yodel

総合スコア508

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shibuchaaaan

2019/04/10 01:02

ありがとうございます。 この参考URLの通りにmy.iniで文字エンコード設定変更→MySQL再起動をしたのですがうまくいかず…他の方の方法も試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問