如何在发送到服务器时对表情符号进行编码(Ruby on Rails)?

10

当我以给定格式将表情符号"\ud83d\ude0e"(表情符号Unicode)发送到服务器时,服务器无法理解该代码,并在从服务器向设备发送推送通知时,通知未到达。

我已经使用了:

NSData *data = [self.activeTextField.text dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

发送消息(表情符号)时进行编码并使用:

NSData *data = [strReceivedMsg dataUsingEncoding:NSUTF8StringEncoding];
NSString *goodValue = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];

在接收消息时。

请建议如何解决这个问题。

谢谢


服务器实际接收到的字节是什么,你的HTTP头部是否声明了正确的字符编码?(我假设我们在谈论HTTP) - Jordan Running
我们正在使用Web Socket传输消息。实际上,这是一个聊天功能。因此,当我通过Socket发送表情符号时,服务器会获取Unicode并且“\”被转义为“\”,这在iOS中无法识别。那么,发送表情符号的标准格式应该是什么,既能够被服务器支持,也能够在跨平台中使用? - Sailendra
“服务器无法理解代码”是什么意思?您是否收到错误消息?我对iOS开发不是很熟悉,但编码NSNonLossyASCIIStringEncoding值得怀疑。如果您有表情符号,则字符串不是ASCII码。 - Jordan Running
我看了一些链接,发现表情符号字符串可能不是ASCII编码,但我不知道它的编码格式是什么。 - Sailendra
2个回答

9
NSString *string = @"This is \u00B7";

将\u00B7替换为您的Unicode值,这是一种有效的解决方案。


Pushkraj,你说要添加“\ud83d\ude0e”代码。我已经发送了这个代码。 - Sailendra

0
在 Swift 中:
编码:-
 let messageData = chatTextView.text.dataUsingEncoding(NSNonLossyASCIIStringEncoding)
        let finalMessage = String(data: messageData!, encoding: NSUTF8StringEncoding)

解码:-

 let data : NSData = str.dataUsingEncoding(NSUTF8StringEncoding)!
            let message = String(data: data, encoding: NSNonLossyASCIIStringEncoding)

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