2010-11-07 106 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方法从数据加载您的字符串。