【问题标题】:APNS € and ¢ and $ signsAPNS € 和 ¢ 和 $ 符号
【发布时间】: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


【解决方案1】:

“所有文件都以正确的 UTF-8 编码保存。”

那么您不需要/不得使用utf8_encode。此函数将输入解释为 ISO-8859-1 编码并将字节转换为它们的 UTF-8 等效项。你自己搞砸了。

【讨论】:

  • 我刚刚删除了 UTf_ENCODE。但是 var_dump 删除了警报(NULL)。 string(73) "{"aps":{"alert":null,"badge":"1","sound":"default"},"e":"order","i":"12"} "
  • 文件保存为 UTF-8。但是标题丢失了。现在添加了标题。消息再次发送,但欧元符号为菱形,带有 ?在里面。没有欧元符号... "{"aps":{"alert":"测试特殊符号 \ufffd","badge":"1","sound":"default"},"e":"order", "i":"12"}"
  • 标题在这里根本不重要。你的文件编码搞砸了,简单明了。
  • 我再次检查了所有文件。 apns class=> UTF-8,推送脚本 => UTF-8,db.php => UTF-8。 $message 是类中传入的 UTF-8。
  • 您是如何检查的?你用什么编辑器来保存文件,你用什么保存它以及如何保存?
猜你喜欢
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 2013-05-16
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
相关资源
最近更新 更多