nananari
@nananari (NANA くん)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

MySQLの文字コードをlatin1からUTF-8に変更できない

冒頭

私はMySQL超初心者です。普段はフロントエンドエンジニアをしております。PHPの学習に際し、データベースも学ぼうかしらと思い、MySQLを触ろうと始めました。さて、MySQLのインストール・アカウント作成が終わり、データベースとはどんなことが出来るんだと意気込んで始めたところ、早速躓いてしまいました。Google先生を頼っても「my.iniを修正して完了っしょ!」という記事や質問箱しか出てこなかったので、先輩方のお力をお借りしたいと思いました。

問題点

まず初めに、my.iniをデスクトップ上にコピーし、そこで編集・更新をかけた後に「C:」直下・「C:\ProgramData\MySQL\MySQL Server 5.7」直下、「C:\Program Files\MySQL\MySQL Server 5.7」直下の3か所にあるmy.iniに反映させました。
その後、MySQLをWindowのサービスプログラムで再起動させ、コマンドプロンプトを再度立ち上げMySQLにログインし、文字コードの確認を行いました。

mysql> show variables like 'char%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | latin1                                                  |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | latin1                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.00 sec)

上記のように、反映前と変化がなく、「character_set_database」と「character_set_server」がlatin1のままであることが分かりました。

my.iniの変更箇所について

my.iniの変更した箇所については下記のとおりです。

[mysql]
# default-character-setに文字コードを指定
default-character-set=utf8

[mysqld]
# character-set-serverに文字コードを指定
character-set-server=utf8

更に、[client]にdefault-character-set=utf8を追加するという手段も見かけたので、MySQLの文字コードに変化がなかった後にこちらも試してみました。

[client]
# 下記を追加
default-character-set=utf8

結果

my.iniを書き替えた後、各プログラムの再起動、PCの再起動を実行し、再度コマンドプロンプトでMySQLログイン⇒文字コードの確認を行いました。

mysql> show variables like 'char%';
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | latin1                                                  |
| character_set_filesystem | binary                                                  |
| character_set_results    | utf8                                                    |
| character_set_server     | latin1                                                  |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set, 1 warning (0.02 sec)

うーん。。。

ワカラナイ。。。

余談

my.iniのUTF-8へ変更する記事を漁っていた際に、Python専門の方が、MySQL上でUTF-8に修正するということをされていたのですが、一時の変更した出来ない仕様で、再起動させるとまたlatin1に戻ってしまいました。

参考サイト

そもそものスタート場所
参考サイト1 (※DB作成する前の段階だったので参考にならず)
参考サイト2 (※テーブル作成前提で話進んで置いてきぼりでした)
他サイト1(質問箱)
他サイト2(質問箱) (※XAMPPを使わない手段として参考にしました。XAMPPをアンインストールしたら成功したという話もありますが、怖くて指が動きません(^^;)

0

No Answers yet.

Your answer might help someone💌