gpt4 book ai didi

java - iOS 推送通知的 PHP 和 Java 字符串长度阿拉伯语文本大小问题

转载 作者:可可西里 更新时间:2023-10-31 22:55:47 32 4
gpt4 key购买 nike

我们通过 PHP/Java 后端系统发送 iOS/Apple 设备推送通知。

我们现在面临的问题是,Java 的多字节字符计数与 PHP 不同。

例如,下面是我们要发送的阿拉伯语文本,一个来自 Java 后端,一个来自基于 PHP 的后端系统(PHP 和 Java 后端 - 两者不同,彼此没有关系):

يبدا بقرص العقيلي واللقيمات وينتهي مع خالد حرية بالامارات نكهة وبهار مع القصار-٦ مساءا على تلفزيون الكويت

现在,当我们检查字符串长度时:

Java:
length 106
byte 194

PHP:
length 369
byte 547

现在 Apple 只允许 256 bytes有效负载,因此 Java 后端能够完整发送上述阿拉伯语文本,而 PHP 不允许这样做。我们需要减少 PHP 的文本。

下面是我的 PHP 代码:

// PHP Interpretation:
echo $str = 'يبدا بقرص العقيلي واللقيمات وينتهي مع خالد حرية بالامارات نكهة وبهار مع القصار-٦ مساءا على تلفزيون الكويت';

echo '<br><br>';

$payload['aps'] = array('alert' => $str, 'sound' => 'default');
$payload = json_encode($payload);
echo $payload;
echo strlen($payload);

echo '<br><br>';

echo '<br><br>';
echo utf8_encode($str);
echo '<br><br>';
echo json_encode($str);
echo '<br><br>';
echo strlen(json_encode($str));
echo '<br>';
echo strlen(utf8_encode($str));
echo '<br>';
echo mb_strlen(json_encode($str));

有没有人遇到过这个问题?有什么已知的解决方案吗?

请指教。

最佳答案

暂时得到一个技巧[虽然不确定这是永久性的解决方案]:将来可能对其他人很方便

在行代码下方注释

//$payload = json_encode($body);

并直接将JSON格式附加到Payload变量:

// static sound and badge commands
$payload = '{"aps":{"alert":"'.$message.'","sound":"default","badge":"+1"}}';

// dynamic sound and badge commands
$payload = '{"aps":{"alert":"'.$message.'","sound":"'.$sound.'","badge":'.$badge.'}}';

在这里,$message 将是我的阿拉伯字符串,它工作就像一个魅力!!

关于java - iOS 推送通知的 PHP 和 Java 字符串长度阿拉伯语文本大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17764086/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com