桜恋唄
幽遊白書・黒鵺×蔵馬中心、桜枝真央の同人的創作の館

RSS0.91 | RSS2.0 || 桜恋唄 (HOME) » 桜恋唄構築話 » NucleusをEUC-JPからUTF-8へ[1]

NucleusをEUC-JPからUTF-8へ[1]

Contents

Writer:
桜枝真央
Category:
桜恋唄構築話
Posted on:
2011-09-14 18:01

 掲示板で告知していた、サイトの「目に見えない」リニューアル作業は殆ど終わりました。本当ならサイトを閉じてすべきなのでしょうが最近の Nucleus は文字コードをあまり気にせず運用できるので (言語ファイルとスクリプト本体が切り離されているので)、思ってたよりは楽に終わりました。とはいえドツボにハマったところもあるので今回はその作業記録。

 まず最初に、今回の作業について簡単な説明を。

作業内容と目的

 これまで Nucleus を EUC-JP で動かしていたのですが、DB が UTF-8 なのでそちらに合わせることにしました。理由は簡単、波ダッシュや em ダッシュなどで文字化けが発生していたためです。自分が使う分には実体参照で記述すればいいんだけど、コメントや掲示板等、お客様が書き込むものが化けるのは困るので。

具体的作業の手順
  1. DB 内のデータをダウンロード、文字化けが出ている部分だけ修正し、上書き
  2. FTP 上のファイルのうち差替えが必要なものを差替え
  3. Nucleus の「グローバル設定」で言語を変更
  4. スキン内の XML 宣言、meta タグ内の言語属性を修正

 …そう、書き出せばこれだけなのです。でも実際は苦労したことや他にもやったことがあったので追々述べていきます。

 まず作業1。ロリポップ!のコントロール画面から PhpMyAdmin を操作し、データをエクスポートします。重さを考えて nucleus_item、nucleus_comment、その他、と3つに分けました (「その他」のうち明らかに文字化けの出ない table は省略)。DROP TABLE は追加せず (一部のみ置換のため)「IF NOT EXISTS」は一応つけておく。テーブル名やフィールド名は逆クォートで囲む。「完全な INSERT 文を作成」にチェックを入れ「長い INSERT 文を作成」はチェックを外す (両方にチェックを入れる意味が分からない)。あとエクスポート形式は「INSERT」じゃなくて「REPLACE」にする。圧縮はなし…と、これくらいかなぁ。

 で、エキスポートした「.sql」ファイルをテキストエディタで開き、半角疑問符 (文字化けすると半角疑問符になるため) を検索して手作業で元の文字 (推測) に直します。ここが地道な作業で、URL のクエリの前についてる「?」とか、本来の意味である疑問符として使ってる部分とか、そういったものを正規表現で除外してます。まあ、漏れがあっても文章の意味が通らなくなるだけでサイトに実害はない…というアバウトな考えで作業しないとやってられません。殆どが「〜」の文字化けでしたが「任侠」の「侠」の文字が化けてて驚いた (笑)。

 半角感嘆符を探すための正規表現は以下のようなものを使っています。「!?」を多用するのと、別館で「○月?日」といった表記があったのと、あと Nucleus のコード改造の記事が多いためその辺の除外指定をしてます。検索に使ったのは秀丸エディタ…マカーなのに Jedit じゃなくて済みません ^^; 新しい秀丸は前と検索機構が違うのね!(←今更気づいた)

[^!</(月:(?!php)(?!&lt;)(?!cgi)(?!htm)(?!json)]\?[^>日(?!&gt;)(?!itemid)(?!blog)(?!amount)(?!catid)(?!page)(?!skinid)]

 全部の記事を REPLACE するとファイルサイズも大きくて大変なので、秀丸で以下にヒットする行を消去し、置換した文字が含まれている記事だけ REPLACE しました。半角感嘆符を含む記事も残したのは何となく (多分不要)。何となく遅延インサート (じゃなくてリプレースなんだけど) を使用してます。

REPLACE DELAYED INTO ([^〜?侠]+?)\);\n

 記事が長いので今回はここまで。作業2以降は別記事に回します。

||

コメント

まだコメントはありません。

このアイテムは閲覧専用です。コメントの投稿、投票はできません。

桜恋唄について | 管理人について | サークル情報 | サイトマップ