表情符号 cStringUsingEncoding 与 NSASCIIStringEncoding 不工作
Emoji cStringUsingEncoding with NSASCIIStringEncoding not working
我有一个包含数据的数组:
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];
因为我在这里得到空值。
更改以下行:
const char *charData = [string cStringUsingEncoding:NSASCIIStringEncoding];
到
const char *charData = [string cStringUsingEncoding:NSUTF8StringEncoding];
解决了我的问题。
多亏了这个forum。
If at all possible, stay away from anything other than UTF8.
NSASCIIStringEncoding will break (return NULL) whenever there is a non-ASCII character in the string. There is no reason to take the risk. Only use cStringUsingEncoding: if you actually for whatever strange reason need a string in that particular encoding. Since NSLog expects UTF8 strings, any encoding that isn't a subset of UTF8 will produce strange results.
我有一个包含数据的数组:
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];
因为我在这里得到空值。
更改以下行:
const char *charData = [string cStringUsingEncoding:NSASCIIStringEncoding];
到
const char *charData = [string cStringUsingEncoding:NSUTF8StringEncoding];
解决了我的问题。
多亏了这个forum。
If at all possible, stay away from anything other than UTF8. NSASCIIStringEncoding will break (return NULL) whenever there is a non-ASCII character in the string. There is no reason to take the risk. Only use cStringUsingEncoding: if you actually for whatever strange reason need a string in that particular encoding. Since NSLog expects UTF8 strings, any encoding that isn't a subset of UTF8 will produce strange results.