@Vocler

В каком месте происходит ошибка с кодировкой?

Есть форма
<form accept-charset="UTF-8">
    <input type="hidden" value="Русский текст">
</form>
<button id="ajax">


Есть обработчик на JS который при нажатии на кнопку отправляет данные на сервер
$.post(
                "/handler.php",
                {
                    data : $('input').val()
                }
            );


Есть handler.php

echo mb_detect_encoding($_POST["data"]); //Тут выводит UTF-8
$mysqli = new mysqli( *Тут данные* );
//$mysqli->query('SET NAMES "utf8"'); //Если расскоментировать эту строку все работает
$mysqli->query('INSERT INTO table (my_column) VALUES (data)');


Кодировка всех трех файлов - UTF-8. Кодировка БД и таблицы - UTF-8, режим сравнения - utf8_general_ci. Однако PHPMyAdmin показывает тарабарщину. Если эту тарабарщину скопировать в текстовый редактор и конвертировать windows1251->utf8 то текст становится нормальным.

В каком месте текст вообще преобразуется в windows1251 если везде установлена кодировка UTF-8?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега Веб-разработка
{PHP, MySql, HTML, JS, CSS} developer
//$mysqli->query('SET NAMES "utf8"'); //Если расскоментировать эту строку все работает

- Доктор, когда я делаю так - больно!
- Не делайте так.

Соединение между базой и пыхом идет по своему протоколу, гоняя байтики неопознанного вида, и чтобы понять что там передается нужно(сюрприз!) указать в какой кодировке эти байтики.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы