Windowsで作成したテキストファイルをMacで開こうとするとエラーが発生して開けなかった。
Mac (OS は Mountain Lion) の標準テキストエディターであるテキストエディットが以下のようなメッセージを出した。

$ほしとねこが好き


書類 "日記.txt" を開けませんでした。テキストエンコーディングUnicode(UTF-8)には対応していません。
このファイルは、別のテキストエンコーディングで保存されているか、テキストファイルでない可能性があります。


いろいろ調べた結果分かったことは、このテキストファイルはWindowsの標準コードであるShift JISで保存されていたのだが、その中に丸数字(丸付き数字)が含まれていたため、それを正しい文字として認識してくれないのが原因であった。
丸数字とは、①、② といったいわゆる機種依存文字と言われる文字のことだ。

これらの文字は日本では広く使われていたのだが、1978年に制定されたJIS X 0208では正式な文字としては規定していなかった。
そのため NEC の PC-9800シリーズでは、98文字(きゅーはちもじ)という外字に丸数字を追加、Microsoft Windows はこれとの互換を考慮して Microsoftコードページ932(CP932)に同じ文字コードでこれらの丸数字を追加した。
ところが、Macintosh では漢字Talk 7.1で丸数字を違う文字コードに割り当ててしまった。
そのため、Windowsで作成した丸数字を含む文章やホームページが、Macintoshでは文字化けして読めないという現象が発生することとなった。
投稿時に機種依存文字は使わないで!と書かれたホームページが時々あるが、それはこういう歴史的経緯による。

しかし、この問題は現在では解決されている
2000年に制定されたJIS X 0213では、正式に丸数字が文字として規定された。
そして、Unicodeにも丸数字は正式な文字として規定されることとなった。
そのため、WindowsであろうがMacであろうが、JIS X 0213やUnicodeに基づいたコードページで文書を保存すれば、文字化けは基本的に発生しないはずである。

それでようやく本題に戻るが、上記のテキストエディターのエラーをどう解決したかを説明したい。
まず、ターミナルを開き、iconvというコマンドで文字コードを変換して新しいファイルに書き出してあげる必要がある。
コマンドは以下の通りだ。

iconv -f CP932 -t UTF8 日記.txt > 日記UTF8.txt

つまり、日記.txtがWindowsのコードページであるCP932からUTF8に変換され、日記UTF8.txt に書き出されることになる。
なお、最初の頃は

iconv -f SHIFT_JIS -t UTF8 日記.txt

というコマンドを試したのだが、「iconv: 日記.txt:514:8: cannot convert」というエラーが出て、丸数字の箇所で変換がストップしてしまって困っていた。
いろいろ調べた結果、CP932やSHIFT_JISX0213を入力ファイルの文字コードとして指定してやれば、エラーがなくなることが分かった次第である。
これで、UTF8 日記.txtを正常にテキストエディットで開くことができるようになり、丸数字も問題なく表示されるようになった。

なお、CP932とSHIFT_JISX0213を指定した場合では、微妙に変換結果が違うことに気がついた。
それは、チルダ文字「~」だ。
これが前者だと「~」に変換されるが、後者だと「‾」に変換される。
私が意図したのは前者なので、CP932をソースファイルの文字コードとして指定することで、正しい変換結果が得られた。

もし、開けないテキストファイルで困っている人がいたらと思い、この記事を書きました。
お役に立てれれば幸いです。


プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB .../技術評論社

¥2,709
Amazon.co.jp