文字化けで止まらない!EPUB制作、変換不能文字を保存・出力前に見つける

EPUB制作の文字化け対策は、制作ラインの入口と出力直前に同じ原稿を検査することです。個々のファイルを直す方法だけでなく、どの状態なら章組みや画像配置へ進めるかを決めます。入口で文字コードと確認語を固定し、途中で原稿が差し替わったら入場検査からやり直します。

制作バッチへ入れる原稿に入場券を付ける

入場券にはファイル名、原本ハッシュ、検出文字コード、改行コード、先頭・中ほど・末尾の確認語を書きます。原稿担当から届いたファイルをその場で直さず、受領した版と作業用複製を分けます。UTF-8で読めることを標準にするなら、その値を制作要件へ明記し、例外のShift_JIS原稿を黙って混ぜません。

Rune Studioを使わない制作でも、この入口は作れます。エンコードを明示して開き、三地点と行数を記録し、別名保存後に再読込します。画面上で読めたという感想ではなく、保存ファイルの値を工程へ渡します。破損済みデータの復元やOCRは入口検査では扱いません。

組版へ渡した後にもう一度だけ照合する

制作途中で章名、奥付、画像説明を追加すると、最初の検査だけでは最終原稿を保証できません。そこで出力直前に、入口券のハッシュと現在ファイルのハッシュを比べます。同じなら文字コードと確認語を再読込し、違うなら差分の由来を確認して新しい券を発行します。

毎回すべての文章を読み直すのではありません。固有名詞、機種依存しやすい記号、文末の終端語など、壊れたときに分かりやすい箇所を選びます。追加された文字も一覧へ入れます。入口に無かった記号が途中で増えたなら、変換不能の確認対象も増やす必要があります。

三ファイルの制作バッチで二つの失敗を止める

今回の追加標本は、制作途中で増えた二つの文字を別々の章に置きました。chapter-a.txtの𩸽(U+29E3D)とchapter-b.txtの🧪(U+1F9EA)を、納品指定の厳密なEUC-JPへ一文字ずつ符号化すると、2ファイルで合計2件の変換不能文字になりました。UTF-8として壊れたバイトを読むエラーではなく、正しく読めている二文字を目的の文字集合が表現できないという検査です。

制作票にはファイル名、文字、コードポイント、オフセット、対象方式を記録しました。二章の原本はUTF-8のまま残し、変換不能のあるEUC-JPを無理に出力しません。同じバッチでも各章の原因と編集判断を別行にするため、一括の自動置換で二件を消す方法は採りませんでした。

Rune Studioの判定後、閉じた三ファイルを再検査する

回復版は原本と別パスに作り、𩸽は編集上明示した読み「ほっけ」、🧪は意味を残す「試験管」へ置き換えました。この表記変更は、技術的に都合のよい似た字へ黙って変えたものではなく、証拠JSONに対応表を残した合成試験上の編集判断です。二つの回復ファイルを厳密なEUC-JPで物理保存しました。

閉じた回復版を再検査すると、目的方式への変換不能文字は2件から0件になりました。Runeの独立検査記録と各ファイルのSHAも保存しています。原本は変更していないため、編集判断が不適切ならUTF-8原本へ戻って別の表記またはUTF-8納品を選べます。

製品資料にある赤い強調、保存警告、自動保存停止は今回のCLIでは目視していません。制作の合格は、二つの具体的な文字を検出し、別パスで修正し、目的方式への再検査0件を得たことに限ります。

差し戻しは工程全体ではなく原稿単位で行う

一章だけ確認語が変わったら、その章と入場券を差し戻します。全章を同じ変換へ掛け直すと、正しかったファイルにも新しい差分が生まれます。保存後に文字コードだけ違う場合は保存設定へ戻り、文字そのものが違う場合は原稿担当へ戻します。

出力EPUBだけで語が欠けたなら、原稿の文字コードではなく、選択したファイルや変換後XHTMLを調べます。制作の入口、保存の出口、EPUBの出力という三地点に責任を分けると、戻る範囲を最小にできます。

納品判定では制作票とEPUB票を重ねる

今回確認したのは、2ファイルにあるEUC-JP変換不能文字2件の検出、編集上明示した別名修正、保存後のEUC-JP再検査0件までです。EPUBパッケージの構造合格を、この入口試験から推測してはいけません。まず各章が目的のEUC-JPで変換不能0件であることを確定し、そのハッシュをEPUB入力一覧へ渡します。

EPUBを出力した後は、章題と奥付の終端語がXHTMLに存在するか、パッケージ構造が別の検査に通るかを確認します。Rune Studioは複数原稿とEPUB設定を一つのワークスペースで扱えますが、欠けた文字の推測復元や販売先の受理まで保証するものではありません。

入口と出口の二つの日付がそろえば次へ渡せます。

最後に、制作担当と検品担当を同じ欄へ書かないことも大切です。入口を確認した人、途中変更を承認した人、出力前に再読込した人を分けておけば、差が出た時刻を追えます。少人数の制作でも、担当名の代わりに作業セッション番号を残すだけで、古いタブから書き出したのか、最新版を選んだのかを判断しやすくなります。

完成記録には、受領時の検査日時と出力直前の検査日時を入れます。今回のように2章の2文字が入口で失敗したら、文字ごとの編集判断を記録し、再検査で2章ともEUC-JP変換不能0件になった別名版だけを採用します。EPUB側の対象語と構造は、その後の別票で確認します。

epub 制作で文字化けを防ぐポイントは、警告を一度見て安心することではありません。工程に入れた版と、出力へ使った版が同じ検査を通ったと説明できることです。まず一章だけで入場券を作り、その記録方式を残りの章へ展開してください。