Передача текста UTF-8 в скрипт php - PullRequest
1 голос
/ 24 мая 2011

Привет, я бы позволил людям вводить в мое приложение также текст с нелатинскими символами, вроде кириллицы и тому подобного.Тем не менее, что бы я ни делал, вместо этого появляются вопросительные знаки.Вот код, который у меня есть в моей программе target-c:

    NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/iPhone/php/insert.php?recipientEmail=%@&passwd=%@&email=%@&personalPasswd=%@&private=%d&latitude=%f&longitude=%f&altitude=%f&horizontal=%f&vertical=%f&disclosedEmail=%d", appDelegate.actualHttpHeader, myRecipient, myKey, email, passwd, myPrivate?1:0, myLatitude, myLongitude, myAltitude, myHeading, myTilting, mySigning?1:0]]
                                                            cachePolicy:NSURLRequestUseProtocolCachePolicy                                                          timeoutInterval:60.0];
    //NSLog(@"message is:%@",myMessage);
    //myMessage = [myMessage stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"in graffitiSubm message=%@", myMessage);
    [theRequest addValue:myMessage forHTTPHeaderField:@"message"];
    [theRequest addValue:street forHTTPHeaderField:@"street"];
    [theRequest addValue:city forHTTPHeaderField:@"city"];
    [theRequest addValue:country forHTTPHeaderField:@"country"];
    [theRequest setValue: @"text/xml;charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

Я попытался использовать настройку UTF-8 в запросе URL, как вы можете видеть, и теперь прокомментированную часть в NSLog.NSLog сообщает о правильных символах кириллицы, с которыми я тестировал.

Тем не менее, когда я печатаю значение строки сообщения в начале скрипта php (insert.php), вместо этого у него есть вопросительные знаки.Если я вручную напишу тест на кириллицу в php, он будет правильно обработан и даже вставлен в БД как таковой.

Что я должен изменить в протоколе, чтобы символы UTF-8 проходили правильно?

Спасибо, Фабрицио

1 Ответ

0 голосов
/ 24 мая 2011

Здесь работает много компонентов:

  1. ввод текста
  2. внутренняя обработка приложения
  3. передача по HTTP
  4. вывод в браузер
  5. браузер, отображающий символы

Если при кодировании текст кодируется в UTF-8 и ни один из шагов 2 - 4 не изменяет необработанную строку каким-либо образомВы всегда должны иметь дело с Unicode.Проблема в вероятности в том, что ваш браузер этого не знает и пытается интерпретировать текст как что-то еще.Сообщите браузеру, что он имеет дело с текстом UTF-8, установив соответствующий заголовок:

header('Content-Type: text/html; charset=UTF-8');
...