17日の午後にバージョンアップをして、自分では問題なく使えているつもりだったのだが、SNSの参加者でWindowsユーザの方が、文字化けに気づいてくださった。
いわゆる全角チルダと波ダッシュの問題。全角チルダが半角ハテナに化けていたのだ。
Macユーザのわたしは波ダッシュを普段から使っているので、自分の目につくところで文字化けを意識していなかったのだが、全角チルダを使っているWindowsユーザの方には、見つけやすかったのだろう。ありがたいことだが、裏を返せばわたしのチェックの甘さである (^^; 。
なぜ文字化けが起こるのかと調べていたら、わたしが使っていたバックアップファイルに問題があった。さくらのphpmyadminのメニュー上から作成したファイルだったが、ファイルはきちんとutf8で出力されているものの、内部に「テーブルを作るときの文字はujisにセットする」という意味のコードが、各テーブル作成時にはさまれていた。
つまりせっかく(事前にコマンドラインから)データベースの文字コードをutf8に設定しておいても、このファイルを実行すると、「ファイルの文字コードがutf8」で「引き出しがujis」で「その引き出しから文字をutf8として引っぱってきて」ウェブに表示させていることになる。なんたる無駄。その過程で全角チルダが化けるのだろう。
もっと早く気づけばよかったのだが、ファイルの文字コードがutf8だから安心しきっていた。
整理すると、こうなる。
さくらでMySQLを 4.0 から 5.1 にするには…
++++++++++
【1】 エクスポート用のファイルの作成に注意する
出力の文字コードだけを気にするのではなく、テーブル作成の行がujisになっていたらその場所を自分の使うコードに変更(多くはutf8だと思うが…)。
【2】 旧データベースを削除し、新データベースを作成したら、sshでログイン(わたしはjellyfiSSHというソフトを使用)。そこからさらにmysqlにログインして、コマンドラインから status; を確認。さくらは設定が ujis になっているはずなので、alter [database name] character set utf8 で、文字コードをutf8にしておく。
【3】 16MB以下のファイルならば、ブラウザ上のphpmyadminからもインポートできるが、それ以上のファイルであるならば、コマンドラインから適切なコマンド(わたしは source [file name] を使った)で読みこませる。
【4】 関連するソフトの設定ファイルを新データベース名で書き換えてアップロード。
++++++++++
ということになる。。。たった4項目で書いてしまったが、わたしがこの試行錯誤にかけた時間は膨大(苦笑)。
なお、こんな作業のあいまにすっかり元ファイルからして文字化けしてしまった全角チルダは、8割くらい手作業で変換してからデータを読ませた。早く気づいていれば化ける前のものが手元に残ったであろうに、残念だ。
わたしは今回の件で、けっこう学んだと思う。次に活かせたらいいのだが。。。
何か書き忘れているかもしれないので、あとでこっそり書き足すかもしれない。