gpt4 book ai didi

ios - 字符串编码和表情符号问题

转载 作者:行者123 更新时间:2023-11-29 03:08:24 25 4
gpt4 key购买 nike

我在从服务器检索一些文本消息时遇到了一些麻烦,尤其是在编码方面。消息可以来自多种语言(因此它们可以有重音、日语……)并且可以包含表情符号。

我正在使用包含一些信息的 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 值。
我无法控制我的服务器,因此在消息发送给我之前我无法更改它们的编码。

最佳答案

问题在于正确确定编码。表情符号不是 NSWindowsCP1252StringEncoding 的一部分,因此转换失败。

而且,你正在经历一个不必要的阶段。不要制作中间 C 字符串!只需调用 NSString 的 initWithData:encoding: 即可。

就您而言,调用 NSWindowsCP1252StringEncoding 始终是一个错误;我很惊讶这对任何字符串都有效。 C3A9 是 Unicode (UTF8)。因此,只需从一开始就使用 UTF8 编码 (NSUTF8StringEncoding) 调用 initWithData:encoding: ,一切都会好起来的。

关于ios - 字符串编码和表情符号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com