如何正确地构建一个使用unicode字符的字符串来与pyapns一起使用


How do I correctly build a string with unicode chars to use with pyapns?

我正在使用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服务器,但没成功。