我在从我的服务器检索一些短信时遇到了一些麻烦,尤其是在编码方面。消息可以来自多种语言(因此它们可以有口音,可以是日语,......)并且可以包含表情符号。
我正在JSON
用一些信息检索我的消息。这是一些日志示例:
(lldb) po dataMessages
<__NSCFArray 0x14ecc7f0>(
{
author = "User 1";
text = "Hier, c'\U00c3\U00a9tait incroyable";
},
{
...
}
)
(lldb) po [[dataMessages objectAtIndex:0] objectForKey:@"text"]
Hier, c'était incroyable
我能够得到正确的文本:
const char *c = [[[dataMessages objectAtIndex:indexPath.row] objectForKey:@"text"] cStringUsingEncoding:NSWindowsCP1252StringEncoding];
NSString *myMessage = [NSString stringWithCString:c encoding:NSUTF8StringEncoding];
但是,如果消息包含表情符号,则cStringUsingEncoding:
返回一个NULL
值。
我无法控制我的服务器,因此在向我发送消息之前我无法更改它们的编码。