0

これが取引です。MySQL で動作するチャットのようなアプリケーションを作成しようとしています。メッセージはデータベースに保存され、JSON で取得されます。

.getJSON を使用して、メールボックスとして使用される div 要素に出力します。メッセージの確認と更新には 1 秒間隔を使用します。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);

そして、それはすべて正常に機能しています...

ユニコード メッセージ、具体的にはキリル文字のメッセージを送信すると、jQuery がそのタイマー/間隔を使用すると、Windows-1252 でモジバケが発生します。ブラウザーからページ全体を更新するまで、以前のすべてのメッセージが文字化けし、問題なく UTF-8 が表示されます。それは次のようになります。

�его� �ила ��п�ка.

タイマーを無効にしてリフレッシュすると、良いメッセージが表示されますが、自動的にチェックする必要があります。HTML は UTF-8 に設定され、DB は utf8_general_ci に設定されます。

getJSON、またはファイルエンコーディングのようなクレイジーなものと関係があると本当に思います。

ご協力いただきありがとうございます。

4

1 に答える 1

0

コードの別の部分で使用していたhtmlspecialcharsを削除することで、問題を解決しました。それは混乱を引き起こしました。マークアップ文字列のメモをありがとう、感謝します。

于 2012-03-08T02:11:13.767 に答える