Iphone: проблема кодирования - PullRequest
0 голосов
/ 06 января 2010

Я открываю текстовый файл, содержащий языковые данные, и читаю его в словарь. Код извлекает все данные, но я не могу получить правильную кодировку. Символы в текстовом файле, такие как, например, «В», переводятся в «√Ç» вместо «å».

Я начинаю очень раздражаться из-за этой проблемы, и я очень ценю, если кто-то может мне помочь ...

КОД:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *path = [[NSBundle mainBundle] pathForResource:[defaults objectForKey:@"language"]  
                                                     ofType:@"properties"];

    NSMutableDictionary *languageDictionary = [[NSMutableDictionary alloc] init];

    char character[1024];
    FILE *languageData = fopen([path cStringUsingEncoding:NSISOLatin1StringEncoding], "r");
    if (languageData == NULL) NSLog([path stringByAppendingString:@" not found"]);
    else
    {
        //check if end of line flag is set, and end while if so
        while (!feof(languageData)) 
        {
            fgets(character, 1024, languageData);
            NSString *stringFromChar = [NSString stringWithCString:character length:strlen(character)];
            NSArray *stringFromCharArray = [stringFromChar componentsSeparatedByString:@" = "];

            if(2 == [stringFromCharArray count])
            {
                [languageDictionary setObject:[stringFromCharArray objectAtIndex:1] forKey:[stringFromCharArray objectAtIndex:0]];
            }

        }

        fclose(languageData);
    }

Ответы [ 2 ]

1 голос
/ 06 января 2010

Узнайте, какова кодировка файла (XCode: cmd + i, Texteditor на ваш выбор: Сохранить как), затем попробуйте с подходящим методом / кодировкой NSString, описанным здесь .

1 голос
/ 06 января 2010

Если вы не делаете:

        NSString *stringFromChar = [NSString stringWithCString:character encoding: NSUTF16StringEncoding];

В противном случае вы загружаете свои строки как 8-битные символы ...

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