getJSON печатает символы юникода как mojibake (Windows-1252) - PullRequest
0 голосов
/ 27 февраля 2012

Вот сделка. Я пытаюсь сделать чат-приложение, которое работает с 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);

И все работает нормально, кроме ...

Когда я отправляю Unicode-сообщение, в частности кириллическое, я получаю mojibake в Windows-1252, когда jQuery использует этот таймер / интервал. Все предыдущие сообщения искажаются до тех пор, пока я не обновлю всю страницу из браузера, а затем она выглядит нормально, показывает UTF-8. Это выглядит примерно так:

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

Если я отключаю таймер и обновляю себя, я получаю хорошие сообщения, но мне нужно, чтобы он автоматически проверялся. Для HTML установлено значение UTF-8, а для базы данных установлено значение utf8_general_ci.

Я действительно думаю, что это как-то связано с getJSON, или с чем-то сумасшедшим, например, с кодировкой файлов.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 08 марта 2012

Я решил свою проблему, удалив htmlspecialchars, которые я использовал в другой части кода.Это сделало беспорядок.Спасибо за примечание к разметке строк, я ценю это.

...