問題の原因になっている箇所
ApnsPHP/Message.php
public function getPayload()
{
$sJSON = json_encode($this->_getPayload(), defined('JSON_UNESCAPED_UNICODE') ? JSON_UNESCAPED_UNICODE : 0);
if (!defined('JSON_UNESCAPED_UNICODE') && function_exists('mb_convert_encoding')) {
$sJSON = preg_replace_callback(
'~\\\\u([0-9a-f]{4})~i',
create_function('$aMatches', 'return mb_convert_encoding(pack("H*", $aMatches[1]), "UTF-8", "UTF-16");'),
$sJSON);
}
PHP5.4以上だとJSON_UNESCAPED_UNICODEが使えるので問題ない
JSON_UNESCAPED_UNICODE (integer)
マルチバイト Unicode 文字をそのままの形式で扱います (デフォルトでは \uXXXX にエスケープします)。 PHP 5.4.0 以降で使用可能です。
では、PHP5.3ではどのように対応すれば良いか
(後で書く)