我有一个包含数据的数组:
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];
因为我在这里变空了。
答案 0 :(得分:0)
更改以下行:
const char *charData = [string cStringUsingEncoding:NSASCIIStringEncoding];
到
const char *charData = [string cStringUsingEncoding:NSUTF8StringEncoding];
解决了我的问题。
感谢forum。
如果可能的话,远离UTF8以外的任何东西。 只要字符串中存在非ASCII字符,NSASCIIStringEncoding就会中断(返回NULL)。没有理由承担风险。只使用cStringUsingEncoding:如果您实际上出于任何奇怪的原因需要在该特定编码中使用字符串。由于NSLog需要UTF8字符串,因此任何不是UTF8子集的编码都会产生奇怪的结果。