За последние 24 часа нас посетили 20182 программиста и 1713 роботов. Сейчас ищут 1314 программистов ...

Кодировка текста при insert to DB

Тема в разделе "PHP и базы данных", создана пользователем IvanKut, 27 июл 2018.

  1. IvanKut

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

    С нами с:
    27 июл 2018
    Сообщения:
    264
    Симпатии:
    0
    Привет
    Прилетает POST запрос на php скрипт с русским текстом. Данный текст в кодировке UTF8 без BOM(Посмотрел в notepad++)

    Эти значения я вставляю в БД - таблица в utf8 кодировке. В итоге получаю такую фигню.
    Подключаюсь к БД стандартным образом.
    Код (Text):
    1. $mysqli = new mysqli(DBhost, DBuser, DBpass, DBdb);
    Как сделать так, чтобы в БД вставлялись значение в нормальной кодировке? Благодарю!
    [​IMG]
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    1. данные должны приходить в UTF8
    2. подключение к БД должно быть в UTF8
    3. кодировку базы данных, таблицы и столбцов нужно привести к UTF8 (в MySQL это utf8mb4_general_ci для регистронезависимого поиска)
    4. кодировка страницы в браузере тоже должна быть UTF8
     
  3. IvanKut

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

    С нами с:
    27 июл 2018
    Сообщения:
    264
    Симпатии:
    0
    Благодарю за ответ
    1. Данные в UTF
    2. После подключение выполнить команду SET NAMES utf8 либо какую-то другую функцию?
    3. Кодировка базы в utf-8 https://goo.gl/vfzLdC DEFAULT CHARSET=utf8
    4. Хм - это php скрипт который только true or false возвращает. Это наверно к данному случаю не относится?
    Из 4 пунктов, получается не сделан только пункт 2 - кодировка подключения так? Буду благодарен за ответ!
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    сет неймс тоже выполни, но главное выставить кодировку подключения штатными средствами той либы, через которую ты подключаешься.
    --- Добавлено ---
    базы, таблицы, столбца!!! =) проверяй все три места
    --- Добавлено ---
    если данные забивались на странице в браузере, то её кодировка тоже должна быть UTF8
    --- Добавлено ---
    попробуй, узнаешь

    все эти пункты действуют так же для вывода из бд =) т.е. pma должен тоже это всё соблюдать, но он вроде умеет автоматом.
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @IvanKut, у pma, кстати тоже есть настройка кодировки его соединения с базой данных.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.840
    Симпатии:
    652
    2. mysqli_set_charset($mysqli,'utf8') с проверкой результата, как положено.
     
  7. IvanKut

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

    С нами с:
    27 июл 2018
    Сообщения:
    264
    Симпатии:
    0
    1. База, таблица, столобец - проверил запросами все utf8
    2. Нашел проблему при подключениии к БД через mysqli -> кодировка latin
    Это кстати нормально или стоит хостеру написать, почему не utf8 по умолчанию?

    Благодарю за помощь всех!
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    должна устанавливаться какая велел
    set names ещё попробуй