Emoji для кодирования JSON, сообщение на веб-сервер

Пожалуйста, помогите мне с моей проблемой в публикации JSON-декодированного символа эмози. У меня есть UITextView, это текстовое представление может иметь характер emoji. Я отправляю данные на веб-сервер с UITextView.text, представленным как JSON, проблема в том, что текст имеет emoji, я не могу получить данные. Что я делаю:

$postData = file_get_contents("php://input") to get the data. 

то я использую

 $post = json_decode($postData,true); 

декодировать данные и иметь массив-символ и вставлять данные в базу данных.

вот фрагмент кода, когда я вставляю свои данные в базу данных.

 $postData = file_get_contents("php://input"); //$postData = '{"body":"characters here ","subject":"subject here","username":"janus","from_id":"185","to_id":"62"}'; $post = json_decode($postData,true); $data=array( 'user_id_from'=>mysql_real_escape_string($post['from_id']), 'user_id_to'=>mysql_real_escape_string($post['to_id']), 'subject'=>mysql_real_escape_string($post['subject']), 'message'=>mysql_real_escape_string($post['body'])); $messages_obj->insert($data); 

Без символа emoji, он работает отлично. без проблем. проблема заключается в том, когда найден символ emoji, данные в $ post (декодированные данные) равны нулю.

Я попытался использовать фиктивные данные (строка 2 в фрагменте кода)

 //$postData = '{"body":"characters here ","subject":"subject here","username":"janus","from_id":"185","to_id":"62"}'; 

и я успешно вставлял символы emoji в базу данных. Я не знаю почему, но он не работает так же, когда данные с устройства ($ postData = file_get_contents ("php: // input"))

Вот как я кодирую и размещаю свои данные на клиенте.

  NSMutableDictionary *messageDetails = [[NSMutableDictionary alloc] init]; [messageDetails setObject:[loginItems objectForKey:@"user_id"] forKey:@"from_id"]; [messageDetails setObject:recipientID forKey:@"to_id"]; [messageDetails setObject:@"subject here" forKey:@"subject"]; [messageDetails setObject:newMessageField.text forKey:@"body"]; [messageDetails setObject:[loginItems objectForKey:@"username"] forKey:@"username"]; NSString *strPostData = [messageDetails JSONRepresentation]; [messageDetails release]; NSData *postData = [NSData dataWithBytes:[strPostData UTF8String] length:[strPostData length]]; [urlRequest setHTTPMethod:@"POST"]; [urlRequest setHTTPBody:postData]; 

BTW, кто создал эти эмо-персонажи? Он разрушает мою жизнь!

Related of "Emoji для кодирования JSON, сообщение на веб-сервер"

После отправки данных на ваш php-скрипт вам необходимо преобразовать его в многобайтную строку:

 $content = mb_convert_encoding($content, 'UTF-8'); 

Вы можете использовать эту функцию:

 function cb($content){ if(!mb_check_encoding($content, 'UTF-8') OR !($content === mb_convert_encoding(mb_convert_encoding($content, 'UTF-32', 'UTF-8' ), 'UTF-8', 'UTF-32'))) { $content = mb_convert_encoding($content, 'UTF-8'); } return $content; } 

Изменить: данные были, вероятно, типа application / x-www-form-urlencoded для нас, и эта функция правильно преобразовала его.