メモ: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, };