将表情符号转换为Unicode

3

我在跨平台上开发聊天应用程序。我能够从 iPhone 发送表情符号到另一个 iPhone 处,一切正常。但是当我试图从 iPhone 发送到 Android 时,显示不正确。Android 库理解 Unicode 如 U+1F604。当我将表情符号转换成 Unicode 时,返回的结果为 \ud83d\ude04。我希望结果是 1F604。

代码

NSData *data = [_txtMessage.text dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *msg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

提前感谢您。:)


"\ud83d\ude04" 是代理对,对于 U+1F604 而言是完全有效的 UTF-16 编码——这也是 NSString 支持的全部内容。 - 一二三
2个回答

0

// 字符串转Unicode

如果让数据使用String.Encoding.nonLossyASCII编码,然后通过String.init(data: data, encoding: String.Encoding.utf8)进行转换 { return convertedString }

// Unicode转字符串

如果让数据使用String.Encoding.utf8编码,然后通过String.init(data: data, encoding: String.Encoding.nonLossyASCII)进行转换 { return convertedString }


0
请尝试以下内容:
将表情符号转换为Unicode。
NSData *data = [textView.text dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *goodValue = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];

goodValue = [goodValue stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"];

从服务器获取值时

NSString *goodValue = [StaticClass urlDecode:[dataDict objectForKey:@"comment_text"]];
NSData *newdata=[goodValue dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *mystring=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding];

我使用了这个解决方案,但返回的结果是\ud83d\ude04。我想要像SMILING FACE WITH OPEN MOUTH AND SMILING EYES一样的结果,即1F604。 - Pramod Tapaniya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接