我有一个文本文件(songlist.txt),我的应用程序从服务器检索并在本地存储。当我尝试在我的应用程序中使用该文件的内容时,我得到了意想不到的结果。当我调查这个问题时,我发现奇怪的字符有时会出现在文本文件的NSString内容的末尾。
为什么这些奇怪的角色在这里? (以下是我的来源):
字符串END处的STRANGE CHARACTERS示例:
1)我
2)upp†
3)mul†
4)ID
//文本文件的精确内容(songlist.txt)
Song One.mp3
Song Two.mp3
宋三.mp3
Song Four.mp3
Song Five.mp3
//Downloading Songlist from the internet, Saving it to Documents folder
-(void)downloadSongList
{
NSString *songlistString;
NSString *URLString_list = @"http://et.bicdoss.com/app/songlist.txt";
NSURL *URL_list = [NSURL URLWithString:[URLString_list stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding]];
// Get Data of Contents (for Write to Disk)
NSData *songData = [NSData dataWithContentsOfURL:URL_list];
if(songData == nil) {
NSLog(@"SONGLIST.TXT NOT DOWNLOADED");
}else{
// Write Songlist.txt to disk
NSString *filePath = [[self documentsDirectory] stringByAppendingPathComponent:@"Music/songlist.txt"];
[songData writeToFile:filePath atomically:YES];
NSLog(@"SONGLIST.TXT DOWNLOADED");
}
}
// Retrieve songlist.txt from local documents folder
-(NSString*)getLocalSongList
{
NSData *textFileData = [NSData dataWithContentsOfFile:[[self documentsDirectory] stringByAppendingPathComponent:@"Music/songlist.txt"]];
NSString *textFileString = [NSString stringWithUTF8String:[textFileData bytes]];
return textFileString;
}
//Create NSMutableArray of contents of songlist.txt (seperated by linebreaks)
...
NSMutableArray *files_catalog;
files_catalog = [[NSMutableArray alloc] init];
[files_catalog addObjectsFromArray:[[self getLocalSongList] componentsSeparatedByString: @"\n"]];
[files_catalog retain];
for(int a = 0; a<[files_catalog count]; a++){
NSLog(@"Contents of Object %i (files_catalog) %@", a, [files_catalog objectAtIndex:a]);
/*
NOTE:
The above NSLog statement always gives strange output (note strange characters at the end of last filename:)
(output)
2010-02-02 21:22:27.145 SomeApp[19670:207] >>>>>>>>>>>>>>>>>>>> Cntnts of Objct 0 (files_catalog) Song One.mp3
2010-02-02 21:22:27.145 SomeApp[19670:207] >>>>>>>>>>>>>>>>>>>> Cntnts of Objct 1 (files_catalog) Song Two.mp3
2010-02-02 21:22:27.146 SomeApp[19670:207] >>>>>>>>>>>>>>>>>>>> Cntnts of Objct 2 (files_catalog) Song Three.mp3
2010-02-02 21:22:27.146 SomeApp[19670:207] >>>>>>>>>>>>>>>>>>>> Cntnts of Objct 3 (files_catalog) Song Four.mp3
2010-02-02 21:22:27.146 SomeApp[19670:207] >>>>>>>>>>>>>>>>>>>> Cntnts of Objct 4 (files_catalog) Song Five.mp3upp†
Some other examples of strange characters at the end were:
I
upp†
mul†
ID
*/
}
...
答案 0 :(得分:2)
导入时,编码似乎搞砸了。尝试使用stringWithContentsOfFile:encoding:error:method。
[NSString stringWithContentsOfFile:[[self documentsDirectory] stringByAppendingPathComponent:@"Music/songlist.txt"] encoding:NSUTF8StringEncoding error:nil];
另外,它会跳过NSData步骤。