2012-01-09 2 views
0

Возможно, мои навыки Google - это мусор, но я не мог найти, как конвертировать NSData из HTML в NSString.Какую кодировку использовать для NSData из загруженного HTML (iPhone)?

Я использую initWithData:encoding:, но если я использую NSUTF8StringEncoding он просто возвращает ноль, и если я использую NSASCIIStringEncoding он возвращает свою строку, но некоторые элементы заменяются вверх тормашками вопросительными знаками. Я бы просто разбирал их, но это случается с несколькими разными персонажами, поэтому я не могу. Любой способ изменить это?

EDIT: В частности, это апостроф и тире, которые вызывают проблемы.

+1

Все зависит от того, для чего собственно кодируется фактическая строка HTML. Это не ASCII, и похоже, что это тоже не UTF8 (хотя часто это происходит с современными веб-серверами). В заголовке ответа HTTP может указываться кодировка, или заголовок HTML (как ASCII) также может указать его. Похоже, вам нужно настроить динамически. –

+0

Заголовки ответа должны иметь значение «Content-Type», которое включает в себя 'charset' для использования. –

+0

Если загруженная страница содержит данные со смешанными наборами символов, вы, вероятно, захотите что-то сделать, чтобы очистить ее, прежде чем запускать ее через 'initWithData: encoding:'. Заголовок «Content-Type» не может полностью доверять, поскольку любые данные могут быть возвращены с сервера. – Kekoa

ответ

0

Очевидно, что вы получаете символы не-ASCII, что дает вам перевернутые вопросительные знаки. Возможно, вы получаете нуль, если данные не могут быть закодированы в UTF8 - возможно, в вашем HTML есть некоторые контрольные символы? Возьмите хороший шестиугольный дамп ваших данных и посмотрите, что вы получаете. Я думаю, что вы можете сделать

ро myNSData

в консоли, и она будет выливаться ваши данные в шестнадцатеричном, (но ясно, что первый), а затем скопировать и вставить его в шестнадцатеричном поле:

TRANSLATOR, BINARY

чтобы видеть, что вы действительно получаете.

+0

po myNsData, похоже, не выплюнул никаких результатов (обратите внимание, что я использовал свою переменную переменных nmutable) –

Смежные вопросы