2012-01-17 40 views
2

我正在使用pyapns服務器發送Iphone推送消息。我使用PHP連接到pyapns服務器。如何正確構建一個字符串與Unicode字符與pyapns一起使用?

當我發送具有Unicode字符如{\"data\":\"\u094d\"}消息我得到以下錯誤響應:

8002原因:「不能反序列化輸入:沒有很好地形成(標記無效):線X,列Y'

如果我將數據更改爲{\"data\":\"ABC\"}一切工作正常。

我正在使用xmlrpc使用php_xmlrpc_encode對字符串進行編碼。

任何人都知道我應該如何格式化我的unicode字符爲此工作?

+0

我認爲問題出現在反斜槓上。不知道是哪一個,從來沒有像 – Novarg 2012-01-17 11:18:15

+1

那樣做過這樣的事情:{\「data \」:\「\\ u094d \」}。請注意雙反斜槓。問題可能在於它試圖做\ u取代整個\ u094d作爲字符串 – Novarg 2012-01-17 11:42:59

+0

您是否找到了解決方案?我對這個問題太困擾了。 :( – neeagl 2013-12-14 13:35:10

回答

0

你需要第二個反斜線添加到Unicode字符:

{\"data\":\"\\u094d\"} 

PHP解釋器將不能識別\ u命令,但你的JSON解析器(或必須根據JSON規範)。

+0

我沒有使用JSON,但使用pyAPNS推送簡單的消息。 我試着發送這個働どうdō,はたら(く)和使用php_xmlrpc_encode,但它說不能反序列化.. – neeagl 2013-12-18 14:20:30

+0

當我嘗試發送這些字符,它說 出現了一個錯誤:代碼:8002原因:'無法反序列化輸入:不正確(無效令牌):第16行,第39列' – neeagl 2013-12-18 15:19:23

+0

問題是你必須正確地將你的字符串編碼爲UTF-8,看起來你會嘗試發送未編碼的字符串,這可能導致像你現在經歷的解析問題,特別是當你嵌套這樣的逃避技巧,在渲染模板之前,您需要知道您顯示的是哪個值(因此是統一的),甚至可能在數據庫級別。 – thobens 2013-12-19 01:36:13

0

這是我如何撰寫郵件並推送到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 
              ))) 
          ) ); 
+0

你試過用'utf8_encode(「働どうdō,はたら(く)」)' – thobens 2013-12-22 00:34:41

+0

你從哪裏得到php_xmlrpc_encode()函數?它不存在於php中:http://www.php.net/php_xmlrpc_encode – 2013-12-24 00:36:48

0

我解決了這個由XMLRPC內部編碼設置爲utf8:

$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8'; 

我相信默認爲ISO-8859-1。 我試圖發送可愛的小emojis到我的pyapns服務器沒有運氣,但這個伎倆。

相關問題