【发布时间】:2014-06-30 07:56:05
【问题描述】:
我正在尝试发送包含特殊字符(如 €、¢ 或 $)的推送通知。但消息最终显示为:€ => Û。脚本在做什么:
$this->message = "Test special sign €";
$message = utf8_encode($this->message);
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'badge' => '1',
'sound' => 'default'
);
$body['e'] = $this->event;
$body['i'] = $this->eventId;
$this->payload = json_encode($body);
var_dump($this->payload);
输出:var_dump($this->payload) string(118) "{"aps":{"alert":"测试特殊符号 \u00db","badge":"1","sound":"default"},"e":"order","i ":"12"}"
打包消息并发送。
$msg = chr(0) . pack('n', 32) . pack('H*', trim($RegisterIds[$key]['registerId'])) . pack('n', strlen($this->payload)) . $this->payload;
可以发欧元符号吗?如果是这样... 怎么样? (或者我做错了什么?)
【问题讨论】:
-
所有文件都以正确的 UTF-8 编码保存。
-
你确定$this->message的编码在utf8_encode()之前是ISO-8859-1吗?
-
@SamuilBanti。不,在阅读 deceze 帖子后删除了 utf8_encode。之前是UTF-8。 (检查 mb_detect_encoding)
-
您应该在查看邮件的位置检查编码标头。它是否存储在数据库中?作为一种解决方法,您可以使用 € (如果你会在浏览器中显示)
标签: php character-encoding apple-push-notifications