RSS

iPhone: テキストファイルの文字コードを調べる

結論からいうと,未知なテキストファイルの文字コードは分からない.唯一できるのはUnicodeか,Unicodeでないかの二者択一だけ.今のところ,少しでも文字コードの問題を回避したいならば,Unicode以外は全部S-JISだ!と排他的処理で通すしかない.

文字コードを(一応)取得するにはNSStringのstringWithContentsOfFile:usedEncoding:error:を使えばできる.これは戻り値がなくて,変数のポインタで返ってくるので,ちょっと使いやすくすると下のようなメソッドを作ればOK.ちなみにシミュレータだとEUCも識別してくれるけど,実機だとやっぱりUTFだけ.

+(NSStringEncoding)getEncode:(NSString *)path
{
NSStringEncoding enc;
NSString *str = [NSString stringWithContentsOfFile:path usedEncoding:&enc error:nil];
str = nil;
return enc;
}

この問題は昔から結構有名な問題らしい.だったら未知なファイルをiconvで文字コード変換すればいいじゃんと思っても,元の文字コードが分からないとiconvは動かない.このスパイラルは抜け出せない.

Bookmark and Share

0 コメント: