JSON でデコードされた絵文字を投稿する際の問題を解決してください。UITextView があります。このテキスト ビューには絵文字が含まれている場合があります。JSON として提示された UITextView.text を使用してデータを Web サーバーに投稿しています。問題は、テキストに絵文字が含まれている場合、データを取得できないことです。私がすることは:
$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);
絵文字が見つからなくても、問題なく動作します。問題なし。問題は、絵文字文字が見つかった場合、$post のデータ (デコードされたデータ) が null になることです。
ダミーデータを使用してみました (コード スニペットの 2 行目)
//$postData = '{"body":"characters here ","subject":"subject here","username":"janus","from_id":"185","to_id":"62"}';
絵文字をデータベースに挿入することに成功しました。理由はわかりませんが、データがデバイスからのものである場合は同じように機能しません ($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];