2011-01-08 97 views
2

我寫一個字符串到一個文件中,像這樣:文本編輯不能識別編碼

NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *path = [docsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt", nameOfFile]]; 

[fileString writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

出於某種原因,文本編輯不承認NSUTF8StringEncoding。我怎樣才能確定它呢?

希望得到一些幫助,費邊

+0

你沒有顯示nameOfFile初始化,但假設是正確的,應該工作。轉到終端並執行`cat filename.txt`來查看文件中是否存在真實數據,並檢查TextEdit的偏好,可能是文件打開編碼等不正確?另外嘗試傳遞一個NSError對象而不是NULL也許這裏有一個錯誤;) – nacho4d 2011-01-08 13:51:10

+0

@ nacho4d那裏完全有數據:)我甚至檢查過`xattr -l file.txt`和`com.apple.TextEncoding`設置爲`UTF-8`。 – fabian789 2011-01-08 14:08:06

回答

1

我剛剛重新創建你的代碼,它爲我工作得很好。 TextEdit可以很好地讀取文件。

#import <Cocoa/Cocoa.h> 

int main(int argc, char *argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

    NSString *fileString = @"Blah blah."; 
    NSString *nameOfFile = @"blah"; 
    NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    NSString *path = [docsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt", nameOfFile]]; 
    printf("fileString:\n%s\n", [fileString UTF8String]); 
    printf("docsDirectory:\n%s\n", [docsDirectory UTF8String]); 
    printf("path:\n%s\n", [path UTF8String]); 
    /* 
    fileString: 
    Blah blah. 
    docsDirectory: 
    /Users/daniel/Documents 
    path: 
    /Users/daniel/Documents/blah.txt 
    */ 
    [fileString writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 
    [pool release]; 
    return 0; 
} 

我能想到的唯一的事情就是你的文字編輯的喜好,這裏是我的: alt text