文字コード utf8 に統一

問題の背景と解決したいこと

私の使っている さくらインターネットのレンタルサーバーは、
データベースの基本の文字コードが EUC-JP (ujis) です。

レンタルサーバーに置いてあるサイトは2つで、
1つは自作SNS
もう1つは後から追加した WordPress

で、website では、色々な文字を使いたいので、php のページは UTF-8 で作成しています。
で、サイトからデータベースへ文字を送る時に、いちいち変換してるので、
データベースの文字コードを UTF-8 に変えたいのですが、これがなかなか神経の磨り減る作業でした。

色々なサイトから得た tips

まず、phpmyadmin を起動すると、「照合順序」というものが出てくるのですが、
これはどの tips を見ても「utf8_general_ci」にすべし、と書いてあります。

次にデータベースの現在の文字コードを調べるために
show variables like “chara%”;
とSQLを打つと、

私のレンタルサーバーでは、
character_set_database と character_set_server が ujis と出ました。
他の項目は utf-8 になっています。
これは以前、このサイトを見て途中までできたからかな、と思います。
そして、character_set_database と character_set_server は変更できなくても問題ないとのこと。

qiitaさんの
「mysqlで文字コードをutf8にセットする」も参考にしました。

テーブルごとのステータスは
show table status;
とSQLを打ったら表示されます

テーブルのステータスの中の「Collation」は、
「照合順序」という意味のようです。
参考

で、次にqiitaさんのこれをやって、

色々と比較、検証して得た推論


同じレンタルサーバー、同じデータベースに入ってる WordPress は、UTF-8 で表示できている。
(丸数字①②③などを入力してみて表示できた)
なので、MySQLサーバーのレベルでの文字コードに問題が無いか、
もしくはMySQLサーバーのレベルでの文字コードに問題があっても、
データベース/テーブルのレベルで文字コードが設定できていれば、ウェブサイトでの utf8 表示に支障は無い。


Wordpress 用のデータベースの文字コードを調べたところ
character_set_client   utf8
character_set_connection   utf8
character_set_database   utf8
character_set_filesystem   binary
character_set_results   utf8
character_set_server   ujis
character_set_system   utf8
という状態なので、


Wordpress 用のテーブルの Collation は全て、
utf8mb4
だったので
「文字コードを指定してテーブルを作成できる」のだろう


というわけで、
文字コードを指定してデータベース/テーブルを作成する
をやってみる
その際の tips はこちら
→結果、、

コメント

タイトルとURLをコピーしました