Задача-c, как кодировать NSArray с UTF8? - PullRequest
2 голосов
/ 29 августа 2011

У меня есть скандинавские алфавиты в моем массиве, такие как, ø, å.С NSLog выходные данные показали эти алфавиты как зашифрованные коды.Как кодировать NSArray с UTF8?Любая помощь приветствуется.

Я пробовал только:

NSArray *nnoWords = [[NSArray arrayWithArray:newNoWords] retain];
NSLog (@"nnoWords: %@ ", nnoWords);

newNoWords является NSMutableArray.nnoWords содержит обычные объекты, такие как NSString hello, pear, apple и т. д., взятые из текстового файла.


РЕДАКТИРОВАТЬ 29 августа 2011 г .:

nnoWords происходит из этого, преобразуется в NSMutable и затемвернуться к NSArray, так называемые nnoWords.И words.txt кодируется в UTF8.

     NSArray *noWords = [[NSArray alloc] initWithArray:
        [[NSString stringWithContentsOfFile:[[NSBundle mainBundle] 
    pathForResource:@"words" ofType:@"txt"]                                         
encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByString:@"\n"]];

Я также пытался:

NSString *norsk = @"æ ø å";
    NSLog (@"%@", norsk);

И вывод правильный:

2011-08-29 13:15:23.302 scanner2[29776:207] æ ø å

Ответы [ 2 ]

2 голосов
/ 29 августа 2011

Проблема в консоли Xcode.Если вы просматриваете выходные данные из Terminal.app, вы увидите, что они соответствуют ожиданиям.

Контрольный пример:

//clang -framework Foundation -o log_utf8 log_utf8.m
#import <Foundation/Foundation.h>

int
main(void)
{
  NSString *word = @"en ord på Svenska";
  NSLog(@"%@", word);
}

Пример вывода:

StackOverflow$ clang -framework Foundation log_utf8.m -o log_utf8
StackOverflow$ ./log_utf8 
2011-08-28 20:10:09.268 log_utf8[65105:707] en ord på Svenska

Если вывы все еще видите тарабарщину, когда просматриваете вывод чего-то другого, кроме сомнительной встроенной консоли XCode, тогда вам нужно проверить, как вы получаете строковые данные:

  • Как работает текст с неСимволы ASCII входят в ваше приложение?
  • В какой кодировке NSString считает, что текст находится?
  • В какой кодировке он находится на самом деле?Если текст взят из файла, то команда file может ответить за вас.
0 голосов
/ 29 августа 2011

Попробуйте:

NSLog(@"%S", [[theArray description] cStringUsingEncoding:NSUTF16LittleEndianStringEncoding]);

из этого вопроса: NSLog неправильная кодировка

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