EPUB用ファイルの作り方で最初に避けたいのは、「同じフォルダだから文字コードも同じ」と決めつけることです。章と奥付を一件ずつ開き、検出された文字コード、変換の要否、次に確認する内容を表へ残します。一件でも判定が違えば、そのファイルだけを保留します。
例はMarkdownの五章とテキストの奥付一件です。実際に個別確認すると、五章はUTF-8、奥付だけがShift_JIS系でした。この時点で六件をまとめてEPUB対象にせず、奥付を別の行として扱うのが安全です。
六件をファイル名で管理する
「本文はUTF-8だった」というメモでは足りません。どのファイルを見たか、変換が必要か、変換後に何を見るかまで一行にします。
| ファイル | 個別に検出した文字コード | 変換の要否 | 変換後に見る項目 | EPUB対象の状態 |
|---|---|---|---|---|
01-opening.md |
UTF-8 | なし | 代表文字と末尾を開き直す | 候補 |
02-setting.md |
UTF-8 | なし | 人名・地名を開き直す | 候補 |
03-conflict.md |
UTF-8 | なし | 記号と数字を開き直す | 候補 |
04-turn.md |
UTF-8 | なし | 会話末尾を開き直す | 候補 |
05-ending.md |
UTF-8 | なし | 最終行を開き直す | 候補 |
colophon.txt |
Shift_JIS系 | あり | UTF-8別名、文字数、発行者名、日付 | 保留 |
ここで「候補」は出力済みという意味ではありません。検出値がそろい、次の確認へ進める状態です。奥付は文字コードが違うため、UTF-8へ別名で用意して開き直すまで保留します。元のcolophon.txtへ上書きしないのが判断ルールです。
検出だけを先に終わらせる
六件の入口確認は、次の順なら混ざりません。
chapters/の五件とcolophon.txtを一覧にし、件数を6と固定します。- 一件ずつ開き、検出された文字コードと改行コードを記録します。隣のファイルの結果をコピーしません。
- 選択中の文字コードで表現できない文字が示されたら、ファイル名と位置を別欄へ残します。意味が分からない文字を自動で置換しません。
- UTF-8の五章は「変換なし」、Shift_JIS系の奥付は「変換あり」とします。ここまでで入口確認は終了です。
- 奥付の変換、別名保存、再読込、文字数・発行者名・日付の一致は次の作業として実施します。それが終わるまでEPUB対象6件とは記録しません。
この順番なら、変換作業が途中でも「六件のうち、どれが違ったか」は失いません。フォルダ全体を先にUTF-8へ一括変換するより、誤って触る範囲を一件に絞れます。
改行コードは文字コードとは別欄に残します。たとえば五章がUTF-8でも、ある章だけCRLF、ほかがLFということはあります。改行が違うだけで文字コード変換の対象にせず、逆に改行が同じだから奥付もUTF-8だとは判断しません。六行の表で「検出文字コード」「改行」「変換不能文字」を独立させると、奥付一件の問題をフォルダ全体の問題へ広げずに済みます。変換後も、この三列を再び埋めてから採用します。
変換後の採用条件
奥付をUTF-8へ変えるときは、colophon-utf8.txtのような別名を使います。採用条件は、UTF-8として開き直せること、変換不能文字が0件であること、文字数と発行者名・発行日が元の意図と一致することです。
すべてそろった後で、上表の奥付を「候補」へ変えます。六件をEPUB対象として選ぶのはその後です。変換後の文字数や採用結果が記録できていない状態で「奥付も直った」と扱わないでください。
Rune Studioで個別検出した結果
Rune Studioの現行Mac版は、UTF-8、Shift_JIS、EUC-JP、ISO-2022-JP、UTF-16などを読み込み対象にし、変換不能文字を示し、その間は自動保存を止めると公開資料に記載されています。
今回の六ファイルでは、五つのMarkdown章がUTF-8、テキストの奥付一件がShift_JIS系と個別に判定されました。一つの章の結果をフォルダ全体へ流用していません。この事実が、六行の表を使う理由です。
一方、Shift_JIS系の奥付をUTF-8へ変換した結果、再読込後の文字数、代表文字、最終的なEPUB対象6件は確認していません。本文で示したcolophon-utf8.txtと採用条件は、次に実行する手順です。破損済みデータの完全復元、OCR、バイナリ修復も扱いません。
一件だけ違えば、一件だけ止める
EPUB用ファイルは、フォルダ単位で同じ文字コードだと仮定せず、一件ずつ入口を確認します。五章がUTF-8でも、奥付がShift_JIS系なら奥付だけを保留する。これで、問題のない五章を不用意に変換せずに済みます。
まず五章と奥付を六行へ並べ、検出値と変換要否を埋めてください。Rune Studioの文字コード機能を候補にする場合は、現行Mac版について詳しくはこちらで確認できます。


