userInfo NSDictionary 中的德语元音变音/特殊字符
German Umlaut / Special characters in userInfo NSDictionary
我目前设置了一个从 Amazon SNS 接收推送消息的应用程序(运行良好)。
在 PHP 方面,我使用了一个正常的 JSON-类似的有效负载,如下所示:
'aps' => array(
'content-available' => 1,
'alert' => array('body' => 'Text with or without Umlaut (ÄÖÜ)'),
'badge' => 1,
'sound' => 'default'
)
所以我的问题是:如果我发送包含元音变音符号 (Ä,Ö,Ü) 的通知,则上部的 Push Badge 会在收到此消息后正确显示文本。
但是,我的应用程序没有:它接收 。
我以正常的 didreceveive 方式处理消息...
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
所以我将收到的 userInfo 字典记录为该方法中的第一件事,在这里我收到了:
NSLog(@"userInfo=%@",userInfo);
alert = {
body = "<null>";
};
badge = 1;
"content-available" = 1;
sound = default;
没有变音符号 - 它工作正常!
对此没有任何问题,这就是为什么我现在很感激任何意见...
提前致谢!
看看这个 article on Whosebug。我 post 的两个解决方案都有一些评论。希望对你有帮助。
解决方案一:
您可以使用 utf-8 字符集定义文档类型(如在对 qour 问题的评论中所写):
<?php header('Content-Type: application/json; charset=utf-8'); ?>
确保所有内容都是utf_encoded。 JSON 仅适用于 utf-8!
function encode_items(&$item, $key)
{
$item = utf8_encode($item);
}
array_walk_recursive($rows, 'encode_items');
方案二:
另一个解决方案是使用 htmlentities()
.
<?php
$test = array( 'bla' => 'äöü' );
$test['bla'] = htmlentities( $test['bla'] );
echo json_encode( $test );
?>
我目前设置了一个从 Amazon SNS 接收推送消息的应用程序(运行良好)。 在 PHP 方面,我使用了一个正常的 JSON-类似的有效负载,如下所示:
'aps' => array(
'content-available' => 1,
'alert' => array('body' => 'Text with or without Umlaut (ÄÖÜ)'),
'badge' => 1,
'sound' => 'default'
)
所以我的问题是:如果我发送包含元音变音符号 (Ä,Ö,Ü) 的通知,则上部的 Push Badge 会在收到此消息后正确显示文本。
但是,我的应用程序没有:它接收
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
所以我将收到的 userInfo 字典记录为该方法中的第一件事,在这里我收到了:
NSLog(@"userInfo=%@",userInfo);
alert = {
body = "<null>";
};
badge = 1;
"content-available" = 1;
sound = default;
没有变音符号 - 它工作正常! 对此没有任何问题,这就是为什么我现在很感激任何意见...
提前致谢!
看看这个 article on Whosebug。我 post 的两个解决方案都有一些评论。希望对你有帮助。
解决方案一:
您可以使用 utf-8 字符集定义文档类型(如在对 qour 问题的评论中所写):
<?php header('Content-Type: application/json; charset=utf-8'); ?>
确保所有内容都是utf_encoded。 JSON 仅适用于 utf-8!
function encode_items(&$item, $key)
{
$item = utf8_encode($item);
}
array_walk_recursive($rows, 'encode_items');
方案二:
另一个解决方案是使用 htmlentities()
.
<?php
$test = array( 'bla' => 'äöü' );
$test['bla'] = htmlentities( $test['bla'] );
echo json_encode( $test );
?>