LeopardでNSStringのinitWithContentOfFile:usedEncoding:error:

cocoa-dev-japanのMLへの投稿で見つけたネタを劣化コピーな感じでメモしておく。

Tigerでは(少なくとも日本語圏的に)まったく役に立たなかったNSStringのinitWithContentsOfFile:usedEncoding:error:だけれども、Leopardでは読み込むファイルのエンコーディングを適切に返してくれる場合もあるとのこと。

それは当該ファイルをLeopardなNSStringのwriteToFile:atomically:encoding:error:で文字列をファイルに書き出していた場合。これはNSStringがその内容をディスクに書き出す際に、拡張ファイルアトリビュートファイルシステム的なアレ)にエンコーディングを記録しておき、読み込む際にそれを用いるという仕組み。

したがって、NSDataで書き出した場合(ネット上のテキストファイルをSafariなどのブラウザで保存した場合はたぶんNSDataを使ってる)や、他のマシン上で書き出したものをコピペしてきたとかだと通用しない(と思う)。

誰かuniversalchardetを移植してくれないだろうか、と他力本願に考えている今日この頃。