Просто округлю мои комментарии и добавлю несколько заключительных слов совета в ответ.
Комментарий 1:
Из общего использования вы можете использовать ASIHTTPRequest
-responseString, в противном случае вы можете использовать сами данные и использовать собственную логику, чтобы выяснить, какой тип кодировки (UTF8, UTF16 и т. Д.)
Комментарий 2:
Извеб-сайт ASIHTTP:
ASIHTTPRequest попытается прочитать кодировку текста полученных данных из заголовка Content-Type.Если он находит кодировку текста, он установит responseEncoding для соответствующего NSStringEncoding.Если он не находит кодировку текста в заголовке, он будет использовать значение defaultResponseEncoding (по умолчанию это NSISOLatin1StringEncoding).> Когда вы вызываете [request responseString], ASIHTTPRequest попытается создать строку из полученных данных, используя responseEncoding в качестве исходной кодировки.
Комментарий 3
См.также: Проблема кодирования с ASIHttpRequest
Я бы лично порекомендовал взять данные ответа и просто предположить, что содержимое может вписаться в UTF16 (или 8).Конечно, вы также можете использовать парсер регулярных выражений или HTML для захвата тега <meta>
внутри элемента <head>
, но если ответ имеет странный тип содержимого, вы не сможете найти строку @"<head"
Я бы также использовал curl
из CLI на вашем компьютере, чтобы увидеть, какие типы контента выбирает ASIHTTPRequest.Если вы выполните команду типа
curl -I "http://www.google.com/"
Вы получите следующий ответ:
HTTP / 1.1 200 OK
Дата: Вт, 09 авг. 2011 г. 20:05:00 GMT
Срок действия истекает: -1
Cache-Control: private, max-age = 0
Content-Type: text/ HTML;charset = ISO-8859-1
Похоже, что почти все сайты правильно отвечают этим заголовком, и если я не думаю, что использование UTF8 было бы хорошей идеей.Не могли бы вы прокомментировать ссылку на сайт, на котором возникла проблема?