php - 来自后端的字符串应包含表情符号,但呈现为重音字母

标签 php ios cocoa-touch encoding nsstring

我在从PHP后端接收字符串到我的iOS应用程序时遇到问题。我收到的字符串如下所示:

测试ððððð

这些特殊字符应该是笑脸。现在,我在这里检查了此编码器:
https://encoder.mattiasgeniar.be/index.php
该字符串确实是UTF-8编码的,带有笑脸符号。

测试😀😀😀😀😀

现在我想知道源字符串是什么编码?以及如何将其转换为在iOS上正确显示的UTF-8字符串?

我试过了

NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:@"Test ððððð" options:0];
NSString *message = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding];


NSString *message = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (CFStringRef)@"Test ððððð", CFSTR(""), kCFStringEncodingUTF8);

并且
NSString *message = [@"Test ððððð" stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

但这些都不起作用。我有点困惑源字符串的编码方式。

最佳答案

您的Foundation应用程序可能没什么问题(顺便说一句,它非常好地原生支持UTF-8和UTF-16)。

要回答您的最后一个问题:

我有点困惑源字符串的编码方式。

如果您打开该字符串并按字节查看它,您会注意到eth字符('ð'[冰岛语和法罗语使用此字符])是UTF-8代码点0xf00xf0也是UTF-8替代序列的开始,开始对上面的表情符号'character'进行编码(0xf0、0x9f,0x98、0x80)。表情符号的3个字节的其余部分将丢失。
[TL; DR]
后端中的某些内容(例如PHP本身)对Unicode的支持不太好。

关于php - 来自后端的字符串应包含表情符号,但呈现为重音字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625760/

相关文章:

php - 带有别名的 SUM() 字段上的 Doctrine orderBy

php - ini文件中的变量php

ios - Firebase 上 iOS 的 Flutter 集成测试?

iphone - 如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?

iphone - 如何为iPhone游戏制作暂停菜单?

php - 在第 n 次登录尝试后阻止用户 - PHP

php - Linux/Ubuntu 找不到 JVM

iphone - 在 UIViewController 之间传递数据时获取 (null)

ios - 特定索引后字符的出现

iphone - 带有静态图像的 UINavigationBar