在聊天应用中,收到的表情消息显示不正确。
在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可以正确显示表情符号。
注意: