テキストエディタで文字コード確認をするときは、BOMの有無、読込み時に判定された文字コード、保存時に自分が選ぶ文字コードを別々に記録してください。この三つは似ていますが、同じ情報ではありません。
今回Rune Studioで実際に読み比べたのは、同じ日本語48行を保存した「UTF-8 BOMなし」「UTF-8 BOMあり」「Shift_JIS」の三標本です。読込み時の判定とBOMの有無は確認できました。保存画面で採用する文字コードまでは操作していないため、そこは読者が自分の保存先で確認する項目として分けます。
三つの欄を一つにまとめない
samples/ に次のファイルがあるとします。
| ファイル | 原本のBOM | 読込み時の判定 | 保存時の選択 |
|---|---|---|---|
utf8-no-bom.txt |
なし | UTF-8 | 未選択 |
utf8-bom.txt |
あり | UTF-8(BOM) | 未選択 |
shift-jis.txt |
なし | Shift_JIS | 未選択 |
左二列は元ファイルと読込み結果です。右端は、別名保存するときに自分が選ぶ値です。UTF-8と判定されたからといって、次の保存も自動的に同じ条件になるとは限りません。
本文が正しく見えるかも大切ですが、「見えた」だけではBOMの有無を証明できません。同じ48行を使い、1行目「第一章」、24行目「喫茶店」、48行目「了」のように代表箇所を決めておくと、判定と文字内容を分けて確認できます。
受け取った三標本を開く順序
原本の情報を先に残す
ファイルを開く前に、名前、サイズ、BOMの有無が分かる範囲を記録します。正本へ上書きしないよう、作業用コピーを work/encoding-check/ に置きます。
一つずつ開き、読込み判定を書く
Rune Studioで三ファイルを別々に開き、表示された文字コードを表の「読込み時の判定」へ転記します。今回の標本では、BOMなしUTF-8はUTF-8、BOMありはUTF-8(BOM)、Shift_JIS標本はShift_JISとして区別されました。
ここでは48行すべてを読み直す必要はありません。冒頭・中ほど・末尾の代表文字が同じかを確認し、文字数や行数が大きく変わっていないかを見ます。
保存するなら別名と文字コードを決める
変換が必要なファイルだけ、たとえば work/encoding-check/chapter-utf8.txt として別名保存します。保存画面で選んだ文字コードを、右端の「保存時の選択」へ書きます。元の判定値をコピーして済ませず、保存時に表示された値を記録してください。
今回の操作では、この保存時選択は確認していません。したがって「Rune Studioが三標本を判定した」ことと「どの文字コードで保存されたか」は別の結果です。
閉じて開き直す
別名保存を行った場合は、いったん閉じ、保存先から開き直します。ファイル名、読込み判定、代表三箇所、BOMの有無をもう一度表へ戻します。保存時選択と再読込み判定が違うなら、上書きせず原因を調べます。
判定を誤りやすい二つの場面
納品仕様から右端の欄を決める
保存時の文字コードは、元ファイルに合わせるのではなく納品条件に合わせます。たとえば「UTF-8 BOMなし」と指定されているなら、読込み時にShift_JISと判定された原稿でも、作業用コピーをUTF-8 BOMなしで別名保存し、その選択値を記録します。逆に「元の形式を維持」が条件なら、変換せずに返す判断もあります。
三欄の値が違うこと自体は失敗ではありません。失敗なのは、違う理由を説明できないことです。原本BOM、読込み判定、保存時選択、再読込み判定を一行で追えるようにし、依頼仕様と一致したときだけ納品候補へ移します。保存画面の値が読めない、またはBOM有無を再確認できない場合は、正本を上書きせず未確定として止めてください。
一つ目は、BOMありUTF-8とBOMなしUTF-8を「どちらもUTF-8」と一行で済ませることです。納品仕様でBOMの有無を指定されている場合、この省略が手戻りになります。
二つ目は、文字化けしていないから保存条件も正しいと考えることです。読込み時判定は「いま開いたファイル」の結果で、保存時選択は「これから作るファイル」の条件です。
Rune Studioの公開機能では主要な日本語文字コードの判定と、変換できない文字の表示が案内されています。ただし、破損済みデータの完全復元や、保存時に選ぶべき文字コードの自動決定を意味しません。
今回わかったことと次の一手
同じ日本語48行を使った三標本では、BOMの有無と読込み時の判定を分けて記録できました。保存時の採用文字コードは未確認なので、実際の案件では別名保存画面の選択値と再読込み結果を自分で確かめる必要があります。
まず三欄の表を作り、手元の一ファイルだけで「原本BOM→読込み判定→保存時選択→再読込み」を通してください。主要な日本語文字コードを判定しながら作業したい人は、Rune Studioの商品ページで対応形式を確認できます。
