这是交易。我正在尝试制作一个与MySQL兼容的聊天应用程序。 消息存储在数据库中,并使用JSON检索。
使用.getJSON我将它打印到用作邮箱的div元素。我使用1s间隔来检查消息并刷新。以下是检索JSON的代码:
setInterval(function() {
$.getJSON("inbox.php?<?php echo $_SESSION['connect']; ?>", function(data) {
if(data.length > 0) {
var str = "";
$.each(data, function(k, v) {
str += "<div class='inbox'>(" + v.time_trace + ") " + v.name + ": " + v.message + "</div>";
});
$("#messages").html(str);
}
});
}, 1000);
这一切都很好,除了......
当我发送一个unicode消息,特别是一个Cyrillic消息时,当jQuery使用该定时器/间隔时,我在Windows-1252中得到mojibake。所有以前的消息都会出现乱码,直到我从浏览器刷新整个页面,而且看起来很好,显示UTF-8。有点看起来像这样:
�его� �ила ��п�ка.
如果我禁用计时器,并刷新自己,我收到好消息,但我需要它自动检查。 HTML设置为UTF-8,DB设置为utf8_general_ci。
我真的认为它与getJSON有关,或者像文件编码一样疯狂。
感谢您的帮助。
答案 0 :(得分:0)
我通过删除我在代码的另一部分中使用的htmlspecialchars解决了我的问题。这让事情变得糟透了。感谢标记字符串注释,我很感激。