Как преобразовать строку в кодировку utf8?
Я читаю мой каталог приложений, как это
NSArray *pathss = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectorys = [pathss objectAtIndex:0];
NSError * error;
NSMutableArray * directoryContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:documentsDirectorys error:&error];
вывод я получаю:
"Forms_formatted.pdf",
"fund con u\U0308u\U0308.pdf",
"hackermonthly-issue.pdf",
это имя файла. мой вопрос, почему я смог преобразовать это имя "Fund Con U \U0308u\U0308.pdf" в правильный формат. заранее спасибо
3 ответа
Преобразовать строку NSString в NSData с кодировкой UTF-16, преобразовать обратно в строку NSString с кодировкой UTF-8. Это, вероятно, UTF-16 с прямым порядком байтов без спецификации. Персонаж не ASCII.
Символ u\U0308 - это не ASCII, это объединяющий диакритический знак,ü, символ также известен как двойная точка сверху, умлаут, греческая диалитика и двойная производная. \ U0308 помещает умлаут над символом u.
Может быть, это поможет:
NSString *documentsDirectorys = [pathss objectAtIndex:0];
const char *documentsDirectoryCstring = [documentsDirectorys cStringUsingEncoding:NSASCIIStringEncoding];
РЕДАКТИРОВАТЬ:
const char *documentsDirectoryCstring = [documentsDirectorys cStringUsingEncoding:NSUTF8StringEncoding];
Вы можете попробовать это. NSLog
использовать метод описания NSArray
печатать NSArray
объект, который имеет дело с символами юникода иначе, чем описание объектов, которые он содержит, таких как объекты NSString. Или вы можете перебрать массив и NSLog
каждый предмет.
NSLog(@"%@", [NSString stringWithCString:[[array description] cStringUsingEncoding:NSASCIIStringEncoding] encoding:NSNonLossyASCIIStringEncoding]);