表情符号在服务器和Android应用程序之间腐败

时间:2015-02-08 21:14:50

标签: java php android emoji emoticons

在聊天应用中,收到的表情消息显示不正确。

在Android发送前进行编码:

     URLEncoder.encode(message,"UTF-8")

EDIT1 使用PHP获取消息:

  $sqlmessage = "SELECT m.id, m.fromuid, m.touid, m.sentdt, m.read, m.readdt, m.messagetext , m.timeSent, u.username from messages m \n"
. "left join users u on u.Id = m.fromuid WHERE `touid` = ".$userId." AND `read` = 0 LIMIT 0, 30 "; 
.
.
.
  if ($resultmessage = $db->query($sqlmessage))         
                        {
                        while ($rowmessage = $db->fetchObject($resultmessage))
                            {
                            $out .= "<message  from='".$rowmessage->username."'  sendt='".$rowmessage->sentdt."' text='".$rowmessage->messagetext."' timeSent='".$rowmessage->timeSent."' />";
                            error_log($rowmessage->messagetext."\r\n", 3, "error.log");
                            }
                        }
.
.
.
echo $out;

这里,表情符号是从php正确打印出来的。到目前为止,一切都很好。

但是当试图用表情符号显示收到的消息时,就会出现问题。 要么它们显示为垃圾文本,要么显示为奇怪的字符。

响应来自sendHttpRequest的字符串,然后解析字符串..etc

EDIT2

日志中的

打印发送消息(笑脸):

   message is ��

在日志中打印收到的消息(笑脸):

   message value from xml replyߘĀ2015-02-10 00:57:07.389

我尝试了我所知道的一切,几乎回答了关于表情符号的所有问题,但无济于事。最后我尝试了这个(在XMLHandler中):

     URLDecoder.decode(attributes.getValue(MessageInfo.MESSAGETEXT),"UTF-8")

如何恢复收到的消息?

我就像发送消息字符串一样需要它,以便EmojiconEditText可以正确显示表情符号。

注意:

  • 只有在消息有表情符号
  • 时才会发生这种情况
  • 表情符号在服务器数据库中正确发送和存储,尝试仅显示收到的表情符号时会出现问题
  • EmojiconEditText正在很好地渲染表情符号

0 个答案:

没有答案