我正在使用pyapns服务器发送Iphone推送消息。我使用PHP连接到pyapns服务器。
当我发送带有unicode字符(如{"data":"u094d"}
)的消息时,我会得到以下错误响应:
8002原因:"无法反序列化输入:格式不正确(无效令牌):行X,列Y"
如果我将数据更改为{"data":"ABC"}
,一切都会正常工作。
我使用xmlrpc来使用php_xmlrpc_encode
对字符串进行编码。
有人知道我应该如何格式化我的unicode字符才能工作吗?
您需要在unicode字符上添加第二个反斜杠:
{"data":"\u094d"}
PHP解释器不会识别\u命令,但您的JSON解析器会识别(或者应该根据JSON规范识别)。
这就是我试图编写消息并推送到pyAPNS服务器的方式。
感谢
$echoString = new xmlrpcmsg ( 'notify', array(
php_xmlrpc_encode($APNS_APP_ID), //app_id
php_xmlrpc_encode($deviceToken), //device_tocke
php_xmlrpc_encode(array("aps" => array(
'alert' => "働 どう dō, はたら(く)",
'sound' => 'newMsg.wav',
'badge' => 1,
'feedid' => $target_nick,
'fromid' => $target_nick
)))
) );
我通过将xmlrpc内部编码设置为utf8:解决了这个问题
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
我认为默认值是ISO-8859-1。我本来想把可爱的小表情符号发送到我的pyapns服务器,但没成功。