メモ:NSStringでテキストファイルを読み込む
任意のテキストファイルのURLを指定して、NSStringで展開する方法です。
いい例かどうか分かりませんが、例えば、2ちゃんねるの板一覧の場合。
元データがShift-JISのデータですが、文字コードを指定してやる事で、文字化けを回避できます。
//URL NSString *URL = @"http://azlucky.s25.xrea.com/2chboard/ex/2channel.brd"; NSURL *sourceURL = [NSURL URLWithString:URL]; //作成 NSString *brdText = [NSString stringWithContentsOfURL:sourceURL encoding:NSShiftJISStringEncoding error:nil]; //確認 NSLog(@"%@",brdText);
もしバンドル(XCodeの左側のペインのファイル一覧)から読み込むのであれば、次のようになります。
//バンドルファイルの指定 NSString *souceFile = [[NSBundle mainBundle] pathForResource:@"2channel" ofType:@"brd"]; //作成 NSString* brdText = [NSString stringWithContentsOfFile:souceFile encoding:NSShiftJISStringEncoding error:nil]; //確認 NSLog(@"%@",brdText);
「encoding:」の部分が対象ファイルのエンコードです(NSStringEncoding)。
XCodeのドキュメントによると、中身は次の通り。
enum {
NSASCIIStringEncoding = 1,
NSNEXTSTEPStringEncoding = 2,
NSJapaneseEUCStringEncoding = 3,
NSUTF8StringEncoding = 4,
NSISOLatin1StringEncoding = 5,
NSSymbolStringEncoding = 6,
NSNonLossyASCIIStringEncoding = 7,
NSShiftJISStringEncoding = 8,
NSISOLatin2StringEncoding = 9,
NSUnicodeStringEncoding = 10,
NSWindowsCP1251StringEncoding = 11,
NSWindowsCP1252StringEncoding = 12,
NSWindowsCP1253StringEncoding = 13,
NSWindowsCP1254StringEncoding = 14,
NSWindowsCP1250StringEncoding = 15,
NSISO2022JPStringEncoding = 21,
NSMacOSRomanStringEncoding = 30,
NSUTF16StringEncoding = NSUnicodeStringEncoding,
NSUTF16BigEndianStringEncoding = 0x90000100,
NSUTF16LittleEndianStringEncoding = 0x94000100,
NSUTF32StringEncoding = 0x8c000100,
NSUTF32BigEndianStringEncoding = 0x98000100,
NSUTF32LittleEndianStringEncoding = 0x9c000100,
};