разница между NSLog и описанием отпечатка с NSString и UTF-8 - PullRequest
1 голос
/ 05 июля 2011

Я в замешательстве.Я анализирую строку json.

Перед синтаксическим анализом я проверяю содержимое NSString.

In Xode4: при нажатии на переменную NSString "description "Консоль показывает значение в формате \u434 \u433 UTF-8

. Когда я вызываю NSLog("%@",content), консоль показывает" читаемый "символ кодировки UTF-8.

Почему это отличается?Как я могу узнать, что строка, которую я получил для анализа, имеет 100% UTF-8?

Спасибо.

1 Ответ

0 голосов
/ 18 октября 2012

Если вы видите искомые символы кириллицы, а не экранирование, с помощью любого метода, то вы работаете со строкой UTF-8.

Метод "-description" здесь не тот, который вы хотите использовать. Это более вероятно, чтобы показать экранированные символы; в частности, всякий раз, когда вы сохраняете значение в элементе списка свойств, таком как NSArray или NSDictionary, его-описание обычно будет экранировать любые символы, кроме простого ASCII.

NSLog - более надежное руководство, поскольку оно не использует -описание. Если он появляется в NSLog, то, вероятно, просто отлично.

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

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

...