php emoji 编码,php – Emoji到JSON编码,发布到Web服务器

请帮我解决发布JSON解码的表情符号的问题.

我有一个UITextView,这个文本视图可能有一个表情符号字符.我将数据发布到Web服务器,UITextView.text显示为JSON,问题是当文本有表情符号时,我无法获取数据.我所做的是:

$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(解码数据)中的数据为空.

我试图使用虚拟数据(代码片段中的第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];

BTW,谁制作了这些表情符号字符?他毁了我的命!

解决方法:

一旦将数据发送到您的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并且该函数正确转换了它.来源:http://www.icode9.com/content-1-218501.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值