8月 152008
 

このブログの前身は「独り言」という名で,最初は主に,研究室の卒業生や在学生を相手にしているつもりで書いていた.その後,訪問者数も増え,ブログとして運用するようになった.もちろん,大学関係者以外の多くの方々にも読んでいただいているが,一般の方々にとっては,大学は未知の世界だろう.大学を卒業しているとしても,授業に出るだけだった学生が,大学の実態を知ることはない.

折角,大学内部にいる者がブログを書いているのだから,訪問してくださる方々に,大学で働いている教員の実態を知ってもらうのも一興だろう.というわけで,新企画「大学教員の実態」を始めることにした.

今後,自己紹介のページにコンテンツを追加していくので,興味のある方は見て下さい.なお,秘密情報は漏らしません.あくまで,大学教員がどんな仕事をしているか知ってもらおうという企画です.

8月 152008
 

今更ながらの話題で恐縮ですが...

WordPressではUTF-8(UCS Transformation Format 8)の使用が推奨されているため,文字コードをEUC-JPからUTF-8へ変換することにした.なぜ最初からUTF-8にしなかったかというと,EUC-JPなら問題なく動作したのに,UTF-8にすると文字化けが発生したためだ.原因解明が面倒だったので,そのときはEUC-JPでよいことにした.

文字コードを変換するに際しては,複数の対象を同時に処置する必要がある.

  • MySQLのデータベース
  • Themeファイル
  • WordPressの表示設定

以下,順番に見ていこう.

MySQLのデータベース

まず,失敗したときのために,EUC-JPのデータベースをバックアップして厳重に保管しておく.これを忘れると,泣くことになるかも.あるいは,EUC-JPのデータベーステーブルとは別に(別名で),UTF-8のデータベーステーブルを作成するのも賢いかもしれない.この作業については,「[WP] EUC-JP → UTF-8 化メモ」および「xserverでのwordpress2.1系から2.2系へのアップデート(文字コードEUC->UTF-8)」を参考にさせていただいた.感謝!

  1. phpMyAdminを利用して,WordPressのMySQLデータベースをエクスポートする.
  2. 新たにデータベーステーブルを作成する場合には,エクスポートしたSQLファイルをテキストエディタで開き,テーブル名の接頭文字を一括変換する.例えば,”wp_*”を”wp2_*”に変換する.
  3. ファイルの最初の方にある,下記の行を探し,行頭に”–”をつけてコメントアウトする.あるいは削除する.

    SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;

  4. “wp_options”テーブルの”wp_user_roles”の行を探す.「管理人」,「編集者」,「作者」,「寄稿者」,「協力者」の5ヶ所について,

    s:6:”管理人”;

    のように日本語部分の前の数字が日本語文字数の2倍になっているはずなので,3倍の数字に書き換える.これは,日本語一文字がEUC-JPでは2byte,UTF-8では3byteと異なるため.

  5. “wp_options”テーブルの”blog_charset”がEUC-JPになっているのでUTF-8に書き換える.
  6. “wp_options”テーブルの”rss_*”の部分は元々UTF-8のため,EUC-JPでエクスポートした際に文字化け状態となる.このため,当該部分のみを別途コピペする.あるいは,”rss_*”の行をすべて削除する.
  7. 文字コードをUTF-8N(BOMなし)にして保存する.(注:下記参照)
  8. phpMyAdminでSQLファイルをアップロードする.
  9. 新たにデータベーステーブルを作成した場合,”wp-config.php”内の”$table_prefix”を変更後のテーブル接頭文字に書き換え,”wp-config.php”をアップロードする.

注:文字コードUTF-8とUTF-8Nについて

文字コードの変換作業には,TeraPadなどのテキストエディタを利用すればよい.その際,UTF-8とUTF-8Nの違いを知っておく必要がある.

UTF-8とは,Unicodeで使える符号化方式である.もともと8ビットを基本とするUTF-8ではBOM (Byte Order Mark)を付与する必要はないが,UTF-8であることが識別できるようにデータストリームの先頭に付与されることがあり,BOMありをUTF-8,BOMなしをUTF-8Nとして区別している.ただし,この区別は日本でしか通用しない.BOMの有無でアプリケーションが正しく動作しなくなることもあるので,その使い分けは重要である.ちなみに,Windowsのメモ帳で作成した「Unicodeテキスト」には標準でBOMが付与される.使い分けるためには,相応のテキストエディタが必要である.例えば,TeraPadの場合,「文字/改行コード指定保存」という機能があり,UTF-8とUTF-8Nを選択できる.

WordPressで使用すべきはUTF-8Nなのだそうだ.つまり,BOMをつけてはいけない.

Themeファイル

テーマエディタを使用して,あるいはローカルで,各種phpファイルに直接日本語を入力している場合には,それらもすべてEUC-JPからUTF-8に変換しておく必要がある.例えば,”Mandigo 1.36.2″を利用しているこのブログの場合,”header.php”に「自己紹介」,「海外旅行」,「人気記事」などの文字を直接書き込んでいるので,このファイルの文字コードを変換する必要がある.

WordPressの表示設定

管理画面の「表示設定」において,UTF-8を選択する.ただし,これだけだと,管理画面が文字化けだらけになってしまう.この問題を解決するためには,”wp-config.php”をテキストエディタで開き,以下の2行

mb_internal_encoding(“EUC-JP”);

define (‘WPLANG’, ‘ja_EUC’);

を以下のように変更する.

mb_internal_encoding(“UTF-8″);

define (‘WPLANG’, ‘ja_UTF’);

これで文字化けはなくなる.

この処理については,「WordPressの文字コードをUTF-8に for ME1.5」を参考にさせていただいた.感謝!

さて,これでうまくいくはずだったのだが,記事を投稿しようとすると,編集画面で文字化けが発生.しかも,管理用メニューを選択すると,画面が真っ白になってしまうようになった.原因がつかめず,一旦,元のEUC-JPに避難した.改めて試みるつもり.