За последние 24 часа нас посетили 22526 программистов и 1202 робота. Сейчас ищут 736 программистов ...

Проблемы с кодировкой формы и вставкой в БД

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

  1. Stairdeck

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

    С нами с:
    9 ноя 2014
    Сообщения:
    47
    Симпатии:
    0
    Адрес:
    Россия
    Здравствуйте!
    Имеется задача вставить из формы значения в БД. Сыпет ошибками.
    Код (Text):
    1. Invalid utf8 character string: 'Иванов Иван Иванович'
    Уже все перепробовал, все кодировки поменял, не помогает.
    Усложняет задачу то, что версии MySQL и PHP очень древние, 5.1.41 и 5.2.17 соответственно.
    Обновлять версии не предлагать.

    Кодировка сервера - CP1251, БД - UTF8

    PHP:
    1.          
    2. $fio = mysql_escape_string($fio);
    3. $rank = mysql_escape_string($rank);
    4. $razryad = mysql_escape_string($razryad);
    5. $region = mysql_escape_string($region);
    6.          
    7. $query = "INSERT INTO users(name, level, rank, region) VALUES(`$fio`, `$razryad`, `$rank`, `$region`)";
    8.  
    9. $result = mysql_query($query);
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    а если вместо грависов использовать апостроф?
     
    Stairdeck нравится это.
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Почему бы, для начала, все под UTF8 не загнать? Или это не твой велосипед, а выданный на руки и такое легаси, что не вариант вообще что-то трогать глобально? Не говоря уже об апдейте PHP и MySQL. Ну или о переходе с mysql_ на mysqli_ расширение. Это вот вообще мастхэв.
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Стопицотый раз здесь говорю:

    В любом случае, даже с разной кодировкой на сайте/в базе, если правильно указать кодировку соединения, ошибки не будет!!!1111
    Потому что mysql перекодирует данные на лету, надо только сообщить ему об используемой кодироваке "на клиенте".

    Раз уж ты используешь древнее расширение mysql, вызывай mysql_set_charset('cp1251')

    mysql_set_charset говорит не о кодировке базы, а о кодировке, которая нужна клиенту.
    --- Добавлено ---
    +1 к совету Fell-x27: лучше иметь везде UTF8
     
  5. Stairdeck

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

    С нами с:
    9 ноя 2014
    Сообщения:
    47
    Симпатии:
    0
    Адрес:
    Россия
    Я уже пробовал :(
    Так ещё хуже получается.

    Код (Text):
    1. 1054 : Unknown column 'Иван Иванович Иванов' in 'field list'
    --- Добавлено ---
    Я понимаю Ваше недоумение, поверьте, у меня такое же. Я бы сам давно уже на PDO все написал и успокоился бы. Но увы, я не могу на этой машине. Ничего под UTF8 перевести не могу, нельзя мне это трогать, не говоря уж о апдейте пхп и мускл.
    --- Добавлено ---
    Разобрался, помог совет этого человека. Спасибо.
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям

    @Stairdeck Чо? )))) Просто у тебя это был не единственный косяк, как выяснилось.

    Мы ещё увидимся, когда придешь спрашивать "почему в mysqladmin я вижу гумно вместо русского текста" или "почему все буквы выводится нормально кроме русской ш или у".
     
  7. Stairdeck

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

    С нами с:
    9 ноя 2014
    Сообщения:
    47
    Симпатии:
    0
    Адрес:
    Россия
    Нет)) Не спрошу)) Знаний у меня хватает, вот только внимательности бы немного)) В любом случае спасибо за помощь)