getJSON将unicode字符打印为mojibake(Windows-1252)

时间:2012-02-27 15:44:06

标签: jquery mysql json unicode mojibake

这是交易。我正在尝试制作一个与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有关,或者像文件编码一样疯狂。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我通过删除我在代码的另一部分中使用的htmlspecialchars解决了我的问题。这让事情变得糟透了。感谢标记字符串注释,我很感激。