За последние 24 часа нас посетили 36995 программистов и 7750 роботов. Сейчас ищут 1758 программистов ...

Проблема с кодировкой

Тема в разделе "PHP для новичков", создана пользователем JonyFront, 9 июн 2016.

  1. JonyFront

    JonyFront Активный пользователь

    С нами с:
    5 июн 2016
    Сообщения:
    143
    Симпатии:
    1
    Добрый день! Уже час борюсь с кодировкой русских символов во время отправки в бд, вот так пишет в бд - ???‹?„???„?‹?? , либо просто знаки вопроса, ужас просто намучался уже, прошу вашей помощи...

    Код обработки php:
    PHP:
    1. mysql_connect($host, $user, $password) or die("MySQL сервер недоступен!".mysql_error());
    2. mysql_select_db($db) or die("Нет соединения с БД".mysql_error());
    3. // Check connection
    4.  
    5.  
    6. //получаем данные через $_POST
    7. if (isset($_POST['psid'])) {
    8.  
    9.   // никогда не доверяйте входящим данным! Фильтруйте всё!
    10.     $str1 = $_POST['psid'];
    11.   $str2 = $_POST['namec'];
    12.    $str3 = $_POST['emailc'];
    13.    $str4 = $_POST['comtext'];
    14.    $date = date();
    15.  
    16. $result = mysql_query ("INSERT INTO comments (id, post_id, user_id, date, autor, email, text, ip, is_register, approve, rating, vote_num, parent)
    17. VALUES ('', '{$str1}', '0', '0', '{$str2}', '{$str3}', '{$str4}', '0', '0', '0', '0', '0', '0')");
    18.  
    19.  
    20. }
    А отправляю на обработку через ajax:
    Код (Javascript):
    1. <script type="text/javascript">
    2.  
    3. $(function() {
    4.  
    5.     $("#commadds").click(function() {
    6.  
    7.         var str1    = $("#namecs").val();
    8. var str2    = $("#mailcs").val();
    9.   var str3    = $("#comments").val();
    10.    var str4    = $("#hidpost").val();
    11.    if(str3 == '') {
    12.   alert("Заполните поля выделенные знаком *");
    13.    } else {
    14.  
    15.  
    16.             $.ajax({
    17.                 type: "POST",
    18.                 url: "/psao.php",
    19.                 data: {namec: str1, emailc: str2, psid: str4, comtext:str3  },
    20.              
    21.                success: function(html){
    22.      
    23.               }
    24.             });}
    25.         return false;
    26.     });
    27. });
    28.     </script>
    В бд и таблице кодировка- cp1251_general_ci, файл обработчика тоже ansi.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Не вижу где установлена кодировка для страницы,
    соединения с бд, смотри SET NAMES для MySQL.
    функции mysql_* уже удалил в PHP7, используй mysqli или pdo.
     
  3. JonyFront

    JonyFront Активный пользователь

    С нами с:
    5 июн 2016
    Сообщения:
    143
    Симпатии:
    1
    она тоже cp1251, через SET NAMES пробовал, не помогает...
    функции mysql_* уже удалил в PHP7, используй mysqli или pdo. - у меня не php7
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    где вопросики :p в PHPMyAdmin? Он бывает не правильно настроен.
     
  5. JonyFront

    JonyFront Активный пользователь

    С нами с:
    5 июн 2016
    Сообщения:
    143
    Симпатии:
    1
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    ну вот, в настройках PHPMyAdmin возможно не правильная кодировка соединения или передачи данных, или они из скрипта попадают битые.
    Если в скрипте выбрать данные из базы и вывести их на экран, то они будут читаться? Если да, то точно PHPMyAdmin настроен криво.
     
  7. JonyFront

    JonyFront Активный пользователь

    С нами с:
    5 июн 2016
    Сообщения:
    143
    Симпатии:
    1
    Да, если вывести на экран - то нормально, но в бд записывается как кракозябры, подскажите пожалуйста, в чем может быть проблема? что в phpmyadmin править?
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    После вставки из скрипта вывод в этом скрипте нормальный?
    --- Добавлено ---
    поищи в поиске, как настроить PHPMyAdmin для работы с кодировкой 1251.
     
  9. JonyFront

    JonyFront Активный пользователь

    С нами с:
    5 июн 2016
    Сообщения:
    143
    Симпатии:
    1
    Я прописал echo $str4 и выводит русский текст как нужно, а в бд заливает уже криво
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    так так так :rolleyes: если всё нормально на сайте, а в PHPMyAdmin нет, то не база виновата, а PHPMyAdmin.
    PHPMyAdmin это просто крутой сайт, он показывает содержимое базы, это не база.
    Ты свой скрип настроил, запись и чтения всё супер :p, а с настройкой PHPMyAdmin кто-то напортачил :mad:
     
    JonyFront нравится это.
  11. JonyFront

    JonyFront Активный пользователь

    С нами с:
    5 июн 2016
    Сообщения:
    143
    Симпатии:
    1
    Спасибо, мне удалось исправить, методом подставки mysql_query("SET NAMES cp1251"); и методом переконвертации кодировки переменных через iconv("UTF-8","Windows-1251",$_POST['namec']);