#objective-c #url #encoding #utf-8 #internationalization
#objective-c #url #кодирование #utf-8 #интернационализация
Вопрос:
Я получаю HTML-источник страницы в виде NSString следующим образом
NSString* url = @"example url";
NSURL *urlRequest = [NSURL URLWithString:url];
NSError *err = nil;
NSString *response = [NSString stringWithContentsOfURL:urlRequest encoding:kCFStringEncodingUTF8 error:amp;err];
часть ответа выглядит так: 2 u00cf u0083 u00cf u0087 u00cf u008c u00ce u00bb u00ce u00b9 u00ce u00b1
Как я могу отобразить греческие символы так, как они должны отображаться в ответе NSString?
Кодировка страницы — «charset = iso-8859-7».
Комментарии:
1. Чтобы продемонстрировать проблему, не могли бы вы предоставить действительный URL-адрес в стиле http: // в вашем примере выше? Кроме того, вы знаете, что кодировка «iso-8859-7», почему вы заставляете ответ быть kCFStringEncodingUTF8? Если нет константы iso-8859-7, которая должна быть явно передана в параметре encoding, почему бы не попробовать версию stringWithContentsOfURL «usedEncoding»?
2. Майкл Даутерманн я протестировал все возможные кодировки.. кодировка: kCFStringEncodingUTF8 это была одна из них. Допустимый URL-адрес — [ссылка] (www.blog.gr ) например. Мне удалось заставить это работать, но со страницами utf-8, но не с этим
Ответ №1:
Аааа, теперь я немного лучше понимаю ваш вопрос.
Собственная реализация NSString, поставляемая Apple, не знает, что делать с кодировкой iso-8859-7.
У вас есть два варианта.
1)
Попробуйте запросить разные кодировки в [NSString stringWithContentsOfURL: encoding: error:], чтобы увидеть, успешно ли загружается одна из них. Моя первая попытка была бы с NSISOLatin1StringEncoding.
2)
Я нашел стороннюю библиотеку (и расширение категории NSString), которая выполняет преобразование iso-8859-7. Но получение доступа к CkoCharset обойдется вам (или вашему клиенту) в 290 долларов США. Это может быть выгодным вложением для экономии времени и хлопот.
https://chilkatsoft.com/charset-objc.asp
и документация здесь: