
化けた原稿を見つけたとき、最初にやることは「保存しないこと」です。 化けているだけなら原稿の中身は無事で、正しい文字コードで開き直せば戻ります。ところが化けたまま保存すると、そこで初めて壊れます。
この記事では、開き直しの手順と、戻らなかったときに何が起きているのかを扱います。判定の仕組みや、外字の探し方は別の記事に譲ります。
化けているとき、原稿は壊れていない
文字コードは、文字に番号を割り当てた対応表です。保存するときはこの表で文字を番号に置き換え、開くときは番号を文字に戻します。
開くのに使った表が違うと、別の文字が出てきます。 これが文字化けです。
大事なのは、番号の並びは変わっていないということです。原稿の中身は無事で、正しい表で開き直せば元の文字が戻ります。
化けたまま保存すると、何が起きるか
化けた状態というのは、間違った文字が画面に表示されている状態です。ここで保存すると、その間違った文字が、新しく番号に置き換えられて書き込まれます。
元の番号は上書きされて消えます。以後、どの文字コードで開いても戻りません。
だから、化けを見つけたら手を止めます。触らない、編集しない、保存しない。
「開き直す」だけなのに、うまくいかない理由
手順自体は簡単ですが、どの文字コードで開き直すかを当てる必要があります。
日本語の原稿なら、候補はShift_JIS、UTF-8、EUC-JP、ISO-2022-JPあたりです。順に試して、読める形になったものを採用します。
ここで2つのつまずきが起きます。
1つ目は、どれも読める形にならない場合です。 原稿が別の言語だったり、そもそもテキストファイルでなかったりします。
2つ目は、複数の文字コードで読めてしまう場合です。 日本語の文字コードは似た構造を持つので、取り違えても大半の文字が正しく出ることがあります。記号だけがおかしい、という状態に気づかず採用してしまいます。
rune Studioは、判定結果を返し、危ないときは保存を止める
rune Studioは、原稿を読み込むときに文字コードを判定します。BOMという印を先に見て、次にシステムの自動判定、そのあと主要な日本語の文字コードを順に試します。
実際に開発版を命令から動かして確かめました。Shift_JISで保存した原稿を読み込むと、文字コードはShift_JISと判定され、改行コード、文字数、行数も一緒に返りました。 UTF-8の原稿を読み込むと、UTF-8と返りました。
まず判定結果を見て、それが本当らしいかを考える。 これが開き直しの出発点になります。
扱える文字コード
読み込みで試されるのは、UTF-8、BOM付きのUTF-8、Shift_JIS、EUC-JP、ISO-2022-JP、UTF-16の2種類、そして最後の受け皿となる形式です。日本語の原稿で使われる文字コードは、ひととおり入っています。
画面の下部で文字コードと改行コードを切り替えられるので、判定が外れていると思ったときは、ここで選び直します。
記号だけがおかしい場合の見分け方
ひとつ、実際にやってみて分かったことがあります。Shift_JISの原稿に波ダッシュ(〜)を書いて保存し、読み出したところ、全角チルダ(~)になって返りました。 見た目のよく似た別の文字です。
これは判定の失敗ではなく、文字コード間の対応の問題として昔から知られているものです。ただ、本文が読めているからといって、記号まで元どおりとは限らないということです。開き直したら、記号だけを見比べてください。
保存が止まる場面がある
表せない文字がある場合は、保存が止まります。実際に確かめたところ、保存されず、この文字コードでは表せない文字が1か所ある、という結果が返り、ファイルは作られませんでした。
なお、この「保存されない」は命令から保存した場合に実際に確かめた結果です。アプリの画面で保存する場合は、資料によれば保存のときに警告が出て、自動保存が止まり、画面右上に通知が出ます。画面で保存したときに実際どうなるかは、この工程では確かめていません。 確かめたのは命令から保存した場合だけです。
化けた状態のまま保存して壊す、という経路の一部がふさがれています。 ただし、これは表せない文字がある場合の話です。化けているだけなら保存できてしまうので、そこは自分で気をつけてください。
向く人と、別の方法が向く人
向いているのは、古い原稿や受け取った原稿をMacで開く人です。 何の文字コードか分からないファイルを開く機会があるなら、判定結果が返ることが効きます。
自分がUTF-8で書いた原稿しか開かないなら、この場面はほとんど来ません。
なお、確かめたのは判定結果が返ることと、保存が止まる場面があることまでです。すべての化けが開き直しで戻るとは書けません。 保存済みの壊れた原稿は戻りません。
まとめ
- 化けているだけなら原稿は無事。正しい文字コードで開き直せば戻る
- 化けたまま保存すると、そこで初めて壊れる。見つけたら触らない
- rune Studioは判定結果を返し、画面下部で選び直せる
- 本文が読めていても記号が違うことがあるので、開き直したら記号を見比べる
次の一歩として、化けた原稿を見つけたら、まず保存せずに文字コードの判定結果を確かめてください。そこから先の判断は、その結果を見てからで足ります。