【问题标题】:Convert emojis into Unicode将表情符号转换为 Unicode
【发布时间】:2015-10-18 13:23:04
【问题描述】:

我在跨平台开发聊天应用程序。我将 emojis 从 iphone 发送到 iphone 正常工作。但是当我尝试从 iphone 发送到 android 时无法正确显示。 Android 库像 U+1F604 一样理解 Unicode。当我将表情符号转换为 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 支持的全部。

标签: ios unicode cross-platform chat emoji


【解决方案1】:

请试试这个:

将表情符号转换为 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 一样返回。我想要像 1F604 这样的结果,用于张开嘴巴和眼睛微笑的笑脸。
【解决方案2】:

// 字符串转unicode

如果让 data = NormalString.data(使用:String.Encoding.nonLossyASCII),让convertedString = String.init(数据:数据,编码:String.Encoding.utf8) { 返回转换后的字符串 }

//Unicode转字符串

如果让数据 = UnicodeString.data(使用:String.Encoding.utf8),让转换字符串 = String.init(数据:数据,编码:String.Encoding.nonLossyASCII) { 返回转换后的字符串 }

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2012-01-27
    • 2018-07-19
    • 2019-05-20
    相关资源
    最近更新 更多