Глупая проблема с UTF8 - PullRequest
       4

Глупая проблема с UTF8

2 голосов
/ 07 ноября 2010

это глупый вопрос, но я просто не заставляю его работать. Я действительно считаю, что мне нужно преобразовать в NSString и использовать "stringWithUTF8String:", но я не понимаю точно, как реализовать это в этом коде, поэтому я получаю правильный вывод в NSLog. Я искал вокруг, но это все еще не работает. Плист правильный.

Мой вывод:

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];
}

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

Руководство по программированию Apple String говорит, что целевые строковые литералы в вашем коде строго 7-битные ASCII. (редактировать: они не являются строго 7-битными ASCII, но все, кроме 7-битных ASCII, означает, что они для каждого модуля не связаны с разделом статических данных, что может привести к переполнению памяти. бремя памяти, пойти на это.)

Вы можете загрузить свои строки из данных с помощью метода NSLocalizedString .

1 голос
/ 08 ноября 2010

Строковые литералы 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;

Локализованные строки String предназначены для многоязычного интерфейса. Отделение отображаемого текста от показанных кнопок и т. П.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...