表情符号cStringUsingEncoding与NSASCIIStringEncoding无法正常工作

时间:2017-11-08 08:13:14

标签: ios objective-c xcode emoji

我有一个包含数据的数组:

MY_ARRAY: (
  "email="My_Email_ID"",
  "message=\Ud83d\Ude0a",
  "key="MY_KEY"
  "id="MY_ID""
)

在消息字段中,我添加了表情符号,它显示了十六进制值。

但是当我尝试将其转换为字符串时:

string = [MY_ARRAY componentsJoinedByString: @"&"];

终端输出显示:

email="My_Email_ID"&message=&key="MY_KEY"&id="MY_ID"

为什么要转换回表情符号?

我面临的问题是这一行:

const char *charData = [string cStringUsingEncoding:NSASCIIStringEncoding];

因为我在这里变空了。

1 个答案:

答案 0 :(得分:0)

更改以下行:

const char *charData = [string cStringUsingEncoding:NSASCIIStringEncoding];

const char *charData = [string cStringUsingEncoding:NSUTF8StringEncoding];

解决了我的问题。

感谢forum

  

如果可能的话,远离UTF8以外的任何东西。   只要字符串中存在非ASCII字符,NSASCIIStringEncoding就会中断(返回NULL)。没有理由承担风险。只使用cStringUsingEncoding:如果您实际上出于任何奇怪的原因需要在该特定编码中使用字符串。由于NSLog需要UTF8字符串,因此任何不是UTF8子集的编码都会产生奇怪的结果。