Я столкнулся с проблемой кодирования строк в разработке ios. История выглядит следующим образом:
Я создаю некоторые значения на китайском языке, а затем создаю NSDictionary для этих значений, словарь используется в качестве параметра для сетевого запроса:
- (void)createActivity
{
NSString *actionTheme = titleF.text;
NSString *actionTitle = biaotiF.text;
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:actionTheme, @"actionTheme", actionTitle, @"actionTitle",nil];
[self networkrequest:];
}
Затем была проделана некоторая работа для словаря:
Преобразуйте словарь в форму JSON как тип NSString.
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:param options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
Кодирование строки из-за китайского слова в строке.
NSString *urlEncodedString = [jsonString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Наконец, полный URL-адрес был создан со строкой выше:
http://app.ic100.com/action/add?paramJson=%7B%22actionTheme%22%3A%22%E6%88%96%E8%80%85%E5%92%8C%E7%94%9F%E6%B4%BB%22%2C%22actionSite%22%3A%22%E5%8E%A (something like this)
Я использую сторонний «ASIFormDataRequest» для сетевого запроса, а также устанавливаю StringEncoding:
ASIFormDataRequest *requstHttp = [[ASIFormDataRequest alloc] init];
[requstHttp setStringEncoding:NSUTF8StringEncoding];
....
Все данные были успешно отправлены на сервер, но когда я запрашиваю эти данные с сервера и показываю их на iphone. Получается нечитаемый текст:
Я тщательно проверил все места, где я должен кодировать или декодировать строку, и используется только utf8. Более того, для серверной части никакая другая кодировка также не используется. И мой коллега проверил отправленные данные с платформы Android, никаких проблем. Так что я думаю, может быть, я упустил некоторые моменты.
Любой совет?