【问题标题】:German Umlaut / Special characters in userInfo NSDictionary德语元音变音/ userInfo NSDictionary中的特殊字符
【发布时间】:2015-01-23 14:15:29
【问题描述】:

我目前设置了一个从 Amazon SNS 接收推送消息的应用程序(工作正常)。 在 PHP 方面,我使用了一个普通的类似 JSON 的有效载荷,如下所示:

'aps' => array(
                    'content-available' => 1,
                    'alert' => array('body' => 'Text with or without Umlaut (ÄÖÜ)'),
                    'badge' => 1,
                    'sound' => 'default'
                )

所以我的问题是:如果我发送包含变音符号(Ä、Ö、Ü)的通知,则上部的推送徽章会在收到此通知后正确显示文本。 但是,我的应用程序没有:它接收 。 我在正常的 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;

没有变音符号 - 它工作正常! 对此没有任何问题,这就是为什么我现在很感激任何意见......

提前致谢!

【问题讨论】:

  • 如果您发送的通知没有德语变音符号(Umlauts hört sich voll seltsam in Englisch an :D),这行得通吗?还是您遇到相同/其他错误?
  • 嗨,Krummy,是的,这就是问题所在 - 没有这些变音符号,它 100% 有效!根据 dict.cc 的翻译是“特殊字符”。 ;)
  • 您可以尝试在标题中设置“字符集”(有 html、php、android 等的可能性。您可能需要谷歌搜索:D)。一个例子是
  • 感谢您的回答-是的,问题是我使用了一个名为 JSON_ENCODE 的 PHP 公式(我不是 PHP 专家),它使用 ASC II!您的解决方案没有解决这个问题,但我会及时通知您!
  • 您仍然必须验证您的所有语句都“翻译”成 uft-8。看看我下面的答案。我希望我至少可以为您指明正确的方向;)

标签: objective-c apple-push-notifications


【解决方案1】:

看看这个article on stackoverflow。我发布的两个解决方案都带有一些 cmets。希望对你有帮助。

解决方案 1:

您可以使用 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');

解决方案 2:

另一种解决方案是使用htmlentities()

<?php
    $test = array( 'bla' => 'äöü' );
    $test['bla'] = htmlentities( $test['bla'] );

    echo json_encode( $test );
?>

【讨论】:

  • 谢谢,这很有帮助!总结一下,我声明了所有将通过 apns 发送的字符串,如下所示: $push_title = utf8_encode('Title with or without Umlaut ÜÖÄ'); ==>系统本身正确显示它们,我只是没有立即意识到这一点-我只看了控制台,它打印了纯UTF....不要让控制台让你做更多的工作--!
猜你喜欢
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
相关资源
最近更新 更多