Question

Voici l'accord. J'essaie de faire une application de chat qui fonctionne avec MySQL. Les messages sont stockés dans la base de données et récupérés avec JSON.

avec .getjson je l'imprime à l'élément div utilisé comme boîte aux lettres. J'utilise l'intervalle 1S pour vérifier les messages et rafraîchir. Voici le code qui récupère 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);

Et tout fonctionne bien, sauf ...

Lorsque j'envoie un message unicode, spécifiquement un cyrillique, je reçois Mojibake dans Windows-1252 lorsque JQuery utilise cette minuterie / intervalle. Tous les messages précédents sont brassés, jusqu'à ce que je rafraîchis la page entière du navigateur et que cela a l'air bien, montre UTF-8. CELA ASSAIRE Ceci:

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

Si je désactive la minuterie et me rafraîchissez-moi, je reçois de bons messages, mais j'en ai besoin de vérifier automatiquement. HTML est défini sur UTF-8 et le DB est défini sur UTF8_General_ci.

Je pense vraiment que cela a quelque chose à voir avec Getjson ou quelque chose de fou comme le codage de fichier.

Merci pour votre aide.

Était-ce utile?

La solution

J'ai résolu mon problème en supprimant HTMLSpecialchars que j'utilise dans une autre partie du code.Cela a fait le désordre.Merci pour la note des chaînes de balancement, je l'apprécie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top