テキストエディットでUTF-8の書類が開けない
公開するパッケージに README ファイル (README.ja.txt) を含めて dmg ファイルを作ってみた。 ところが README.ja.txt をクイックルックで表示しようとしても、 テキストファイルのアイコンが表示されるのみ。 英文の README.txt は内容が表示されるのに。
しかも、 READE.ja.txt をダブルクリックしてもテキストエディットが開かない。 というか、 エラーメッセージを表示する。 どうもエンコーディングが 「日本語 (Mac OS)」 を期待して開こうとしたところ、 別のエンコーディングになっているから怒っているらしい。
たしかに UTF-8 で保存している。 なんで誤認識しているんだ? テキストエディットでなくて CocoaEmacs で文書を作成したせい?
テキストエディットの環境設定の 「開く/保存」 タブの 「標準テキストファイルのエンコーディング」 は 「自動」 に設定されている。 だから自動でエンコーディングを判別してくれるのではないの?
試しに README.ja.txt のエンコーディングを Shift_JIS にしてみたら、 今度はテキストエディットで開けた。
うーん、 Shift_JIS にするべきなのかな。 でもテキストエディットの環境設定で 「ファイルを開くとき」 のエンコーディングをカスタマイズしている場合はどういう動作をするのだろう。
それに Xcode で普通にファイルを作ると UTF-8 がデフォルトになる。 なので Xcode では UTF-8 でも表示できていたんだよね。 これはどうやら Xcode がプロジェクトの設定ファイルで、 このファイルはこのエンコーディングという情報を持っているみたいだ。
あと CVS のリポジトリのコメントのエンコーディングも UTF-8 で統一しているので、 格納するファイルのエンコーディングも統一しておきたいなあ。
ふと思いついて、 Xcode で README.ja.txt のエンコーディングを UTF-8 に再変換して保存してみた。 そして Finder でダブルクリックしたところ、 今度は UTF-8 でも表示できた。 一体どういうことなのか。
そこでターミナルで ls -l README.ja.txt
してみたところ、
拡張属性が付いていることがわかった。
そこで xattr
してみると、
$ xattr -l README.ja.txt com.apple.TextEncoding: utf-8;134217984
だそうである。 なんだ、 そういうことか。
そこで README.ja.txt をちょっと修正して CVS に commit してみた。
しかし cvs export
すると拡張属性が取れてしまう。
どうも、
commit した時点ではずれている様子。
あたりまえか。
しかたがないので、 Makefile で頒布用 dmg を作る時に、 README.ja.txt と COPYING.ja.txt に
$ xattr -w com.apple.TextEncoding utf-8するようにしてしまった。