2010-11-07 110 views
2

這是一個愚蠢的問題,但我只是沒有得到它的工作。我相信我需要轉換爲NSString並利用「stringWithUTF8String:」,但不明白如何在此代碼中實現它,所以我得到正確的輸出在NSLog中。我一直在環顧四周,但它仍然無法工作。 plist是正確的。UTF8愚蠢的問題

我的輸出是:

2010-11-07 21:43:00.419 plist_test[2984:207] Förbered och skriv 
2010-11-07 21:43:00.425 plist_test[2984:207] KLART 
2010-11-07 21:43:00.425 plist_test[2984:207] LÄS IN PLIST 
2010-11-07 21:43:00.427 plist_test[2984:207] array2: ( 
    ETT,  
    "TV\U00c5", ========Here is the problem, should be "TVÅ"  
    TRE, 
    FYRA 
) 

這裏是我使用的代碼。

- (void)viewDidLoad { 

NSLog(@"Förbered och skriv"); 

NSMutableArray *array = [[NSMutableArray alloc] init]; 
[array addObject:@"ETT"]; 
[array addObject:@"TVÅ"]; 
[array addObject:@"TRE"]; 
[array addObject:@"FYRA"]; 

[array writeToFile:@"/Users/PeterK/Desktop/plisttest.plist" atomically: TRUE]; 


NSLog(@"KLART"); 


NSLog(@"LÄS IN PLIST"); 

NSMutableArray *array2 = [[NSMutableArray alloc] init]; 

array2 = [NSMutableArray arrayWithContentsOfFile:@"/Users/PeterK/Desktop/plisttest.plist"]; 

NSLog(@"array2: %@", array2); ====here is the output 


[super viewDidLoad]; 
} 
+1

是那些正確序列化到文件上的字符串? – rano 2010-11-07 21:07:05

+0

看起來還行我:http://www.fileformat.info/info/unicode/char/c5/index.htm – 2010-11-07 21:15:33

回答

1

Objective-C字符串文字不是嚴格的7位ASCII,如您的示例所示。但是,您應該避免使用除7位ASCII之外的任何內容來保持一致性和兼容性。

以下是使用Unicode安全地簡單加載字符串的工作。

+ (id)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error; 
+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error; 

本地化字符串的東西是用於多語言界面的東西。分離顯示的按鈕和顯示的按鈕等等。

+0

我試過以下內容: – PeterK 2010-11-09 18:02:42

+0

我還沒有得到這個東西的工作? – PeterK 2010-11-09 18:03:56

+0

我收到以下輸出:2010-11-09 19:04:17.722 plist_test [684:207] LIST IN PLIST 2010-11-09 19:04:17.729 plist_test [684:207] text:<?xml version = 「1.0」encoding =「UTF-8」?> <!DOCTYPE plist PUBLIC「 - // Apple // DTD PLIST 1.0 // EN」「http://www.apple.com/DTDs/PropertyList-1.0.dtd 「> \t ETT \t TVA \t TRE \t FYRA PeterK 2010-11-09 18:04:34

2

Apple String Programming Guide說你的代碼中的目標c字符串文字是嚴格的7位ASCII。 (編輯:它們不是嚴格的7位ASCII,但除7位ASCII以外的任何其他內容都意味着它們是每個模塊,並且不會鏈接到靜態數據部分,這可能會導致內存膨脹。換句話說,除非這是一個內存負擔,去吧。)

您可以通過NSLocalizedString resources方法從數據加載您的字符串。