Вот сделка. Я пытаюсь сделать чат-приложение, которое работает с 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, или с чем-то сумасшедшим, например, с кодировкой файлов.
Спасибо за вашу помощь.