Строки Unicode в строке JSON - PullRequest
0 голосов
/ 16 июля 2011

Я знаю, как использовать строку JSON в Objective C.

Например:

{
  "name":"school",
  "address":"very near here"
}

Это легко, потому что строки - простой английский.

Ситуация такова, что я хотел бы прочитать данные JSON, содержащие строки Unicode

Например:

{
  "name":"trường học",  
  "address":"rất gần đây"  
}

Вышеуказанные строки вьетнамские.

или

{  
  "name":" 名 学校",    
  "address":"近义词"    
}

Строки выше китайские.

Но когда я отображаю эти строки в консоли Xcode или в UITextView, я вижу символы мусора.

Знаете ли вы, как читать и отображать строку JSON Unicode в проектах iPhone?

Ответы [ 3 ]

2 голосов
/ 18 июля 2011

Как и предполагали до меня, базовый уровень, скорее всего, ниже фактического анализа и отображения JSON. Может быть, ваш веб-сервер неправильно устанавливает кодировку? Предполагая, что файл на сервере имеет кодировку utf8, вы можете форсировать его с помощью ASIHTTPRequest, например:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:self.urlString]]; 
[request setResponseEncoding:NSUTF8StringEncoding];

Если это не поможет, возможно, вы захотите опубликовать заголовки http (создайте их с помощью wget или curl) и фактический код клиента http. Вы также можете проверить RestKit , который предоставляет готовое решение для http-клиента и анализа json.

1 голос
/ 16 июля 2011

NSString - это, по сути, представление UTF16.Если вы читаете из сети или из файла, скорее всего, это будет UTF8 или какая-нибудь национальная кодовая страница.Скорее всего, ваша проблема в преобразовании из представления сети / файла в строку NSString, переданную в анализатор JSON, а не в сам анализатор JSON.

0 голосов
/ 16 июля 2011

Спецификация JSON требует, чтобы данные JSON были закодированы в UTF-8, UTF-16 или UTF-32.

  • Убедитесь, что другие строки Unicode правильно выводятся на консоль.
  • Убедитесь, что ваши JSON-данные закодированы в UTF-8.
  • Если оба значения верны, значит, что-то не так с используемой библиотекой анализатора JSON.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...