Приветствую всех друзья! Столкнулся с проблемой. Написал веб-страницу на php, сохранил её и указал в ней кодировку UTF8 Код (Text): header( 'Content-type: text/html; charset=utf8' ); , написал функцию для добавления текста в базу MYSQL Код (Text): if ( $_GET['func'] == 'addinfouser' ) { sleep(1); if ( !isset( $_SESSION['iduser'] ) ) exit(); if ( $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest' ) exit(); $_POST['one'] = trim( $_POST['one'] ); $_POST['two'] = trim( $_POST['two'] ); $_POST['name'] = trim( $_POST['name'] ); $_POST['city'] = trim( $_POST['city'] ); if ( empty( $_POST['name'] ) ) { echo 'Вы не указали ваше имя!'; exit(); } mysql_query( " INSERT INTO infoueser (iduser, one, two, name, city, date) VALUES ('" . $_SESSION['iduser'] . "', '" . substr( check_text( $_POST['one'] ), 0, 20 ) . "', '" . substr( check_text( $_POST['two'] ), 0, 20 ) . "', '" . substr( check_text( $_POST['name'] ), 0, 10 ) . "', '" . substr( check_text( $_POST['city'] ), 0, 5 ) . "'', '" . time() . "')" ); echo 1; exit(); } В таблице MYSQL указана кодировка " utf8_general_ci ". Отправляю в базу текст в кодировке utf8, но русский текст не записывается, просто появляются пустые поля, текст на английском записывается идиально Дополнение: В config.php при подключении к БД есть строчка mysql_query( "set names utf8" ); Сам файл .php сохранен в кодировке UTF-8 В начале файла есть строчка header( 'Content-type: text/html; charset=utf8' ); Друзья, в чем может быть проблема ?
Переходите на MySQLi и используйте set_charset из этого расширения. P.S. Рубить UTF-строки substr'ом???
Бред. Это указ для браузера в какой кодировке отображать содержимое. Изучи на будущее и не пихай куда попало. в 1 строке почему гет параметр не проверяется на наличие ключа ? после будешь ловить ноти ошибки и спамить файл логов новыми записями, при обращении на страницу. Почему логика разделена условий на 5 и 7 строке ? складывается умозаключение об незнании основ условий. 10 по 13 как и с 1 строкой. Начнем с документации php.net Ознакамливался с данной функцией, читая официальную документацию ? Что там написано в бледно-красной рамке, с заглавным/жирным словом "Внимание" ? давайте наконец перейдем с каменного века ? Конечно у тебя русский текст не записывается.... тьфу, точнее у тебя байты ломаные приходят, когда ты используешь функцию substr без приставки mb_ На будущее - прочти про sql-injection в запросах и как защититься. --- Добавлено --- Не успел написать, как мухи на г. налетели
приставка mb_ не решила проблему --- Добавлено --- Да, я чайник в php но я учусь... если есть возможность подскажите как мне справится с данной проблемой что бы до меня дошло
Значит ты не всю информацию по коду/структуры таблицы предоставил, так как в данном случае именно приставка решит ее.
@WiNNeR, для начала учись внимательно читать ответы и наводящие вопросы. Я спросил какой тип поля и какая длинна у него. Вообще по хорошему дамп структуры таблицы может многое рассказать. Если ты учишься и не читаешь книги, ты не учишься нифига
Да, я чайник в php но я учу Код (Text): function addinfouser() { $.ajax({ type: 'POST', url: 'ajax.php?func=addinfouser', data: ({one: $('#one').val(), two: $('#two').val(), name: $('#name').val(), city: $('city').val()}), dataType: 'html', beforeSend: function() { $('.btn_box').css({display:'none'}); $('.pajax').css({display:'block'}).html('ждите...'); if ( $('#one').val() != '' && $('#two').val() != '' && $('#name').val() != '' && $('#city').val() != '' ) { $('.pajax').css({display:'block'}).html('проверка на вирусы - [ Dr.web ]'); } }, --- Добавлено --- Нужно ведь просто mb_ подставить без каких либо остальных изменений?
предупреждение Это расширение было объявлено устаревшим в PHP 5.5.0 и удалено в PHP 7.0.0. Вместо этого следует использовать расширения MySQLi или PDO_MySQL . См. Также руководство по MySQL: выберите API и связанные с ним часто задаваемые вопросы для получения дополнительной информации. Альтернативы этой функции включают в себя: mysqli_set_charset () PDO: добавить кодировку в строку подключения, например, charset = utf8 --- Добавлено --- Я пока не хочу переводить в Mysqli у меня нет на это время к сожалению, но я обязательно это сделаю чуть позже, подскажи пожалуйста как мне выйти на данный момент из ситуации, и если можно распиши как чайнику....
Я готов учиться, но я правда уже ломаю над этой проблемой голову второй день, если все же можешь дай решение.... Я запомню и буду знать как это делать, и если что возможно тоже смогу кому нибудь помочь в будущем
само собой... их же пишут идиоты, для таких же как и они идиотов.. "умным" книги не нужны у них слишком "много" ума, что бы понять о чём пишут в книгах. @WiNNeR, ты никогда не станешь программистом, потому что ты не умеешь внимательность (ну и не читаешь книг). Я дважды задал один и тот же вопрос и ты дважды его в упор не видишь...
@WiNNeR, отлично. Теперь вынеси запрос из mysql_query в переменную, выведи его на экран и скопируй сюда результат вывода.
ну типа у тебя там есть Код (Text): mysql_query('...'); а ты сделай Код (Text): $sql = '....'; echo '<pre>' . $sql . '</pre>'; die(); mysql_query($sql);
выдай скрипт от и до / структуру таблицы, чтобы все смогли протестить у себя и выявить диагноз. Иначе басня на кофейной гуще не кончится.