PHPのchm形式のマニュアルの文字化けを直す方法

[`tweetmeme` not found]
[`evernote` not found]
このエントリーをはてなブックマークに追加
はてなブックマーク - PHPのchm形式のマニュアルの文字化けを直す方法
Facebook にシェア
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`grow` not found]

みなさんはPHPの関数をすべて把握していますか?

PHPには便利な関数がたくさんあるのですが、そのすべてを把握している方は少ないと思います。その中でもPHPを始めたばっかり、ほかの言語と行き来してやられている方は、リファレンスが手放せないと思います。

そのときに役に立つのがPHPの公式サイトに置いてあるヘルプ形式のマニュアルです。関数を調べるのに毎回Googleさんにお世話になることもなく、リファレンス本を開くこともなく、オフラインで関数や機能を調べることができます。

こんな便利なヘルプファイルも一つ落とし穴があって、検索キーワードの部分が文字化けして使えません。これでは使い勝手が半減ですので、文字化けを修正したchmファイルを作成する方法をご紹介いたします。

ヘルプファイルをデコンパイルして自分で作成するだけで、インデックス表示だけでなく検索機能にも日本語が使用できるようになります。

作成するステップは以下の通りです。

  1. 前準備:必要ファイルをダウンロード
  2. HTML Help Workshopのインストール
  3. chmファイルをデコンパイルする
  4. プロジェクトを作成
  5. プロジェクトのオプションを変更する
  6. hhk、hhcファイルを修正する
  7. ファイルの文字コードとcharsetをShift-JISに変更する
  8. chmファイルの作成

前準備:必要ファイルをダウンロード

PHPのマニュアルはユーザノートがついているphp_enhanced_ja.chmをダウンロードします。ユーザノートとは関数やクラスについてユーザのやりとりが書いてある部分です。サンプルコードや、Howtoなども含まれているので結構参考になります。

HTML Help Workshopのインストール

HTML Help Workshopをダウンロードしてインストールします。uniextractなどでファイルを解凍して、管理者権限でコマンドプロンプトを開き→regsvr32 itcc.dllでレジストリに登録すればインストールせずに使用することもできます。

chmファイルをデコンパイルする

HTML Help Workshop(hhw.exe)を起動すると何もない画面が開きますので、chmのデコンパイルを選択します。

File->Decompileを選択しますimage

「Destination folder」にデコンパイルするフォルダを指定、「Compiled help file」に先ほどのphp_enhanced_ja.chmファイルを指定します。
image

デコンパイル作業は1~2分ほどで完了します。image

プロジェクトを作成

次に新規プロジェクトを作成します。image

魔法使いマーリンでしょうか?ハテナ模様のローブがおしゃれです。image

先ほどデコンパイルしたフォルダを指定します。image

「HTML Help table of contents」と「HTML Help index」にチェックを入れます。image

先ほどデコンパイルしたフォルダにhhcファイルが入っていますのでBrowse..から選択します。
image

同じようにhkkファイルも選択します。
image

これでプロジェクトの指定は完了です。最後までマリーンさんは動かずじまいでした。
image

プロジェクトを作成した状態で左側ペインはこのようになります。
Project、Contents、Indexタブが日本語で表示されているのが確認できます。
imageimageimage

プロジェクトのオプションを変更する

Projectタブをダブルクリックするから、左端のツールバー上部のChange project optionsボタンをクリックしてプロジェクトのOptionsウィンドウを開きます。
image

GeneralタブのDefault file:に「res/index.html」を入力します。
chmファイルを開いたときに最初に表示されるhtmlファイルを指定しています。image

次にCompilerタブの「Compile full-text search infomation」にチェックをいれます。
このチェックが入っていないとchmファイルの検索機能が使えません。
image

hhk、hhcファイルを修正する

コンパイル作業に移る前に、このままの状態ではエラーが発生しますのでファイルを修正しておきます。

このようなエラーとなります。
image

以下の二つのファイルを開きます。

  • php_manual_ja.hhk
  • php_manual_ja.hhc

pharfileinfo.chmod.htmlで検索して以下のように変更します。

変更前
image

変更後

<param name="Local" value="res/pharfileinfo_chmod.html">

function.chmod.htmlで検索し以下のように変更します。

変更前
image

変更後

<param name="Local" value="res/function_chmod.html">

hhc,hhkファイル両方とも変更したら、デコンパイルで指定したフォルダ以下にあるresフォルダを開きます。

function.chmod.htmlを先ほどしていしたファイル名「function_chmod.html」に、
pharfileinfo.chmod.htmlを「pharfileinfo_chmod.html」に変更します。

コンパイル時にHHC 5003エラーがでるのを避けるために、hhc、hhkファイルの<LI>要素を、小文字の<li>に一括置換しておきます。

ファイルの文字コードとcharsetをShift-JISに変更する

デコンパイルされたhtmlファイルはすべて文字コードがUTF-8となっています。このままコンパイルしてもIEコンポーネントを使っているのでヘルプ表示はされるのですが、ヘルプの検索機能を使ったときに文字化けが発生してしまいます。resフォルダ以下にあるhtmlファイルすべての文字コードを変更していきます。

1万ファイル以上ありますので、さすがに手作業は無理ですので自動変換ソフトを使用します。今回使ったソフトは「Repl-Ace」というソフトです。

以下のような設定で、文字コードをUTF-8からShift_JISへ変更しつつ、metaタグのcharsetをShift_JISに置換していきます。

  • 探索ディレクトリをデコンパイルしたフォルダに設定
  • 検索文字列を「charset=UTF-8″」に、置換文字列を「charset=Shift_JIS”」に
  • 説明に「@USE[UTF8]@CNV[SJIS]」を設定

image

これで「一括実行」をすると変換が開始されます。

chmファイルの作成

ここまできたらあと一息です。File→Compileを選択してコンパイルします。image

hhpファイルを作成する場所を指定します。デコンパイルした場所と同じところを選択します。
image

Complieボタンを押してコンパイルを開始します。2~3分くらいでコンパイルが完了します。エラーなく終わればphp_enhanced_ja.chmファイルができています。

Microsoft HTML Help Compiler 4.74.8702

Compiling c:\htmlhelp\php\php_enhanced_ja.chm


Compile time: 7 minutes, 0 seconds
11,987	Topics
200,504	Local links
4,770	Internet links
71	Graphics


Created c:\htmlhelp\php\php_enhanced_ja.chm, 33,232,657 bytes
Compression decreased file by 109,082,285 bytes.

できあがったchmファイルを開いてみると目次、キーワードの部分が日本語化されています。ためしに検索タブから検索してみると、ちゃんと日本語でも引っかかってくれます!
image

これでPHPの開発が進みそうですね!はじめから公式サイトに文字化け解消版があれば良いのですが・・・

参考URL

PHPマニュアル(chm)文字化け対策(KeyToolsを使わない版)

One comment on “PHPのchm形式のマニュアルの文字化けを直す方法

  1. はじめまして。この記事のアップに大変助けられています。ありがとうございます!
    わかりやすい説明で、最終のヘルプファイル作成まで行き着けました。
    (残念ながら各htmlファイルのcharset指定に失敗したらしく後でやり直しますが)作業全体の流れもわかり、とても嬉しいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA