Как изменить кодировку NSString? - PullRequest
4 голосов
/ 16 сентября 2011

У меня есть NSArray из NStrings, я получил это от NSLog при печати массива. Вот код, который я реализовал:

NSMetadataQuery *query = [[NSMetadataQuery alloc] init];
.....
NSArray *queryResults = [[query results] copy];

for (NSMetadataItem *item in queryResults)
{
    id value = [item valueForAttribute: kMDItemAlbum];
    [databaseArray addObject: value];
}

"The Chronicles Of Narnia: Prince Caspian",
"Taste the First Love",
"Once (Original Soundtrack)",
"430 West Presents Detroit Calling",
"O\U0308\U00d0\U00b9u\U0301\U00b0\U00aeA\U0300O\U0308A\U0300O\U0308I\U0301A\U030a-O\U0301a\U0300A\U0302\U00a1",
"\U7ea2\U96e8\U6d41\U884c\U7f51",
"I\U0300\U00ab\U00bc\U00abO\U0303A\U030aE\U0300y\U0301\U00b7a\U0301",
"A\U0303n\U0303\U00b8e\U0300\U00b2I\U0300C\U0327U\U0300",
"\U00bb\U00b3A\U0308i\U0302O\U0303\U00bdO\U0301N\U0303",
"American IV (The Man Comes Aro",
"All That We Needed",

Теперь, как я могу изменить нечитаемые человеком строки на читаемые человеком строки? Спасибо.

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

Если посмотреть на экранирование, выполненное description (например, \U0308), строки неверны (например, «Öйú ° ®ÀÖÀÖÍÅ-Óà¡»), потому что полученные вами данные были неправильными.

Это вероятно не по вине Spotlight.(Вы можете проверить это, попробовав другую библиотеку тегов ID3.) Скорее всего, сами файлы содержат плохо закодированные теги.

Чтобы исправить это:

  1. Кодируйте его в8-битная кодировка, которая соответствует символам.Вы не можете просто выбрать кодировку (например, «ASCII», которую Cocoa отобразил в ISO Latin 1 в последний раз, когда я проверял) случайным образом;вам нужно использовать кодировку, которая содержит все символы на входе , а правильно их кодирует для того, что вы собираетесь делать дальше.Попробуйте ISO Latin 1, ISO Latin 9, кодовую страницу Windows 1252 и MacRoman, в этом порядке.
  2. Декодируйте закодированные данные как UTF-8.Если это не помогло, вернитесь к шагу 1 и попробуйте другую кодировку.

Если шаг 2 завершается успешно при любой попытке, это ваши действительные данные (если вы не очень неудачливы).Если это не удается при всех попытках, данные невозможно восстановить, и вы можете предупредить пользователя о том, что его входные файлы содержат фиктивные теги.

1 голос
/ 16 сентября 2011

Анализ этих строк не особенно прост: см. этот пост для справки Там есть ссылки на другие сообщения SO с конкретными способами решения этой проблемы.

1 голос
/ 16 сентября 2011

Эти строки имеют кодировку utf-8.Вы можете декодировать их:

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