11ステップで今使ってるGeeklogをユニコード(UTF-8)に変える!
- 2004/11/05 00:54 JST
- 投稿者: SaY
- 表示回数 13,231
そろそろユニコードにしようかと思っていたところにタイムリーな記事が、本家の記事(http://www.geeklog.net/article.php/200410120657418)でアップされた。tokyoaheadさんが書いたものを和訳しておいたので参考にどうぞ。
Geeklogをある言語用に設定して使い始めてから、多言語対応に変えようと言うのはとても難しい。使っている文字セットが異なっている場合には特にそうだ。UTF-8を使っていれば、すべての言語と文字セットを同時に何の問題もなく表示することが出来る。
だから、一番いい方法はデータをすべて一気にユニコードに変えてしまうことだ。記事やコメントの文字コードを一つ一つ手作業でページのエンコードを変えてからいじりたくはないだろう。
このためには、(1)notepad.exeのような、保存時にエンコードを指定できるエディタ(2)MySQLを直接操作できること(WindowsのcmdとかLinuxのシェルとか)(3)PHPEdit(または、Linuxのシェルエディターとか、僕の知ってる限りだけど)のように、ユニコードを扱えないエディタ。使っているエディタがユニコードを使えるかどうかは、ユニコードが使えるエディタで"xx?xx"とか言う感じの文字を入力したファイルを作成して、これをユニコードが使えなさそうなエディタで開いてみるといい。先ほどの文字”?”が、”?¶”になっていたら大丈夫だ。
これで準備は完了。変換を始めよう。
追記:1.3.10では、UTF-8用の言語ファイルが用意されているので、ステップ10の変換は不要だ。
ちなみに日本語のファイルは、japanese_UTF-8.php。euc-jpのものをemacsで機械的に変換しただけだからうまくいくかどうかは、ちょっと自信がない。
このサイトをutf-8化したら改めて報告する予定だ。 1.Geeklogのバックアップ機能を使ってデータベースのバックアップを作成する。
2.出来たファイルをサーバーからダウンロードする。このファイルはZipするなり、CDに焼くなりして、弁護士に送っておいた方がいい。ステップ1に戻るはめになったときのために保存しておいてくれるはずだ。
3.ファイルをNotepadまたは他のユニコードが使えるエディタで開く。データベースが大きければ時間がかかるかも知れないが、待つだけの価値はある。開いたファイルを別の名前で保存する。「保存」ボタンを押す前に、「エンコーディング(文字コード)」を選択する部分がファイル名の下にあるはずだから、ここで「UTF-8」を選ぶ。
4.次にやることはこれをユニコードが使えない方のエディタで開くことだ。ファイルの先頭に”???”という奇妙な3文字があるはずだから、削除する。この3文字は後でSQLを操作するときにエラーになる。そして、ファイルを保存しておく。
5.ファイルをサーバーにアップロードする。転送時間の節約のために、ファイルをZipしてもいい。(これはダウンロードの時も同じだ)
6.可能であれば新しいデータベースを作成する。無理なら、古いデータベース上のテーブルを全部削除しておく。(さっきの弁護士にバックアップを封筒に入れといてすぐに送れるように頼んだ方がいいかも知れない)
7.次のようにして、データをデータベースに書き戻す。
mysql --user=root --password databasename file.txt
「databasename」は、さっきの新しいデータベース、または空にしたものの名前を指定する。file.txtは、notepadで保存してアップロードしたファイル名だ。ファイルは、作業中のディレクトリに無ければならないので必要ならちゃんと移動しておく。Windowsでは、MySQL.exeのある/Mysql/bin-directoryにファイルがなければならない。ファイルを移動したくなければ、mysqlをフルパスで指定するか、ファイル名をフルパスで指定すればいい。
データベースのroot権限を持っていない場合には、「root」をMySQLサーバー上でアクセス権のある適当な名前に変える。
8.enterを押す。ユーザーのパスワードを聞かれるので、入力してenterを再び押す。そうすると、データベースがサーバーに書き戻される。
9.新しいデータベースを作成したならば、geeklogのconfig.phpできちんと指定しておく。
10.geeklogの言語を_UTF-8で終わる言語セットのどれかに変える。UTF-8ではない環境で使っていたユーザーのストレスを避けたいなら、UTF-8で使うすべての言語ファイルをnotepadで変換しておいた方がいい。(今回は先頭の3文字を削除する必要はない。)各ファイルの30行目にあるエンコーディング文字列を次のように変える。
$LANG_CHARSET = "utf-8";
11.標準文字コードがUTF-8を使ったもののどれかになるようにconfig.phpを次のように設定する。(239行目辺りだと思う)
$_CONF['language']="english_UTF-8";
12.言語フォルダーから、UTF-8でないファイルを削除しておいても良い。
これで終わりだ。ではまた :-)
Geeklogをある言語用に設定して使い始めてから、多言語対応に変えようと言うのはとても難しい。使っている文字セットが異なっている場合には特にそうだ。UTF-8を使っていれば、すべての言語と文字セットを同時に何の問題もなく表示することが出来る。
だから、一番いい方法はデータをすべて一気にユニコードに変えてしまうことだ。記事やコメントの文字コードを一つ一つ手作業でページのエンコードを変えてからいじりたくはないだろう。
このためには、(1)notepad.exeのような、保存時にエンコードを指定できるエディタ(2)MySQLを直接操作できること(WindowsのcmdとかLinuxのシェルとか)(3)PHPEdit(または、Linuxのシェルエディターとか、僕の知ってる限りだけど)のように、ユニコードを扱えないエディタ。使っているエディタがユニコードを使えるかどうかは、ユニコードが使えるエディタで"xx?xx"とか言う感じの文字を入力したファイルを作成して、これをユニコードが使えなさそうなエディタで開いてみるといい。先ほどの文字”?”が、”?¶”になっていたら大丈夫だ。
これで準備は完了。変換を始めよう。
追記:1.3.10では、UTF-8用の言語ファイルが用意されているので、ステップ10の変換は不要だ。
ちなみに日本語のファイルは、japanese_UTF-8.php。euc-jpのものをemacsで機械的に変換しただけだからうまくいくかどうかは、ちょっと自信がない。
このサイトをutf-8化したら改めて報告する予定だ。 1.Geeklogのバックアップ機能を使ってデータベースのバックアップを作成する。
2.出来たファイルをサーバーからダウンロードする。このファイルはZipするなり、CDに焼くなりして、弁護士に送っておいた方がいい。ステップ1に戻るはめになったときのために保存しておいてくれるはずだ。
3.ファイルをNotepadまたは他のユニコードが使えるエディタで開く。データベースが大きければ時間がかかるかも知れないが、待つだけの価値はある。開いたファイルを別の名前で保存する。「保存」ボタンを押す前に、「エンコーディング(文字コード)」を選択する部分がファイル名の下にあるはずだから、ここで「UTF-8」を選ぶ。
4.次にやることはこれをユニコードが使えない方のエディタで開くことだ。ファイルの先頭に”???”という奇妙な3文字があるはずだから、削除する。この3文字は後でSQLを操作するときにエラーになる。そして、ファイルを保存しておく。
5.ファイルをサーバーにアップロードする。転送時間の節約のために、ファイルをZipしてもいい。(これはダウンロードの時も同じだ)
6.可能であれば新しいデータベースを作成する。無理なら、古いデータベース上のテーブルを全部削除しておく。(さっきの弁護士にバックアップを封筒に入れといてすぐに送れるように頼んだ方がいいかも知れない)
7.次のようにして、データをデータベースに書き戻す。
mysql --user=root --password databasename file.txt
「databasename」は、さっきの新しいデータベース、または空にしたものの名前を指定する。file.txtは、notepadで保存してアップロードしたファイル名だ。ファイルは、作業中のディレクトリに無ければならないので必要ならちゃんと移動しておく。Windowsでは、MySQL.exeのある/Mysql/bin-directoryにファイルがなければならない。ファイルを移動したくなければ、mysqlをフルパスで指定するか、ファイル名をフルパスで指定すればいい。
データベースのroot権限を持っていない場合には、「root」をMySQLサーバー上でアクセス権のある適当な名前に変える。
8.enterを押す。ユーザーのパスワードを聞かれるので、入力してenterを再び押す。そうすると、データベースがサーバーに書き戻される。
9.新しいデータベースを作成したならば、geeklogのconfig.phpできちんと指定しておく。
10.geeklogの言語を_UTF-8で終わる言語セットのどれかに変える。UTF-8ではない環境で使っていたユーザーのストレスを避けたいなら、UTF-8で使うすべての言語ファイルをnotepadで変換しておいた方がいい。(今回は先頭の3文字を削除する必要はない。)各ファイルの30行目にあるエンコーディング文字列を次のように変える。
$LANG_CHARSET = "utf-8";
11.標準文字コードがUTF-8を使ったもののどれかになるようにconfig.phpを次のように設定する。(239行目辺りだと思う)
$_CONF['language']="english_UTF-8";
12.言語フォルダーから、UTF-8でないファイルを削除しておいても良い。
これで終わりだ。ではまた :-)