За последние 24 часа нас посетили 23967 программистов и 1641 робот. Сейчас ищут 844 программиста ...

Вечная беда Кодировки

Тема в разделе "PHP для новичков", создана пользователем immortal.1986, 26 мар 2014.

  1. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    Вопрос
    Есть проект на локалке все работает на ок!
    переношу на сервак все проблемы,непонятные,
    ломал голову нашел проблему!
    ОБЪЯСНИТЕ ПОМОГИТЕ! как лучше делать!

    ДОПУСТИМ В notepade++
    Windows/dos UTF-8 - НЕ РАБОТАЕТ!!!!!!!!!!!!
    UNIX UTF-8 - РАБОТАЕТ!!!!!!!!!!!!
    Как надо делать что бы избишгать таких багов
    теперь придётся копипастить в эти файлы!
    и вроде кодируе без бом utf
    А проблемы еще с базами и выводом из них!(тоже вроде и база и таблицы и выводы utf8)
    но я так понял с этой проблемой надо бороться,перед каждым запросом , делать QUERY(чарсет утф) итд
    Так верно делать?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    mysqli_set_charset
     
  3. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    всегда после подключения к бд возьми за правило указывать кодировку соединения как пример выше
     
  4. AndyTitan

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

    С нами с:
    30 июн 2013
    Сообщения:
    301
    Симпатии:
    0
    Адрес:
    Saturn’s moon Titan
    выдераю с рабочей тетради и от души :) вторая строка )

    Код (Text):
    1.  
    2. $link = mysqli_connect('localhost', 'root','','web'); // подключаемся к базе данных.
    3. mysqli_query($link, "SET NAMES 'cp1251'"); // инициализируем кодировку cp1251.
    4.  
    5. $sql='SELECT * FROM teachers'; // инициализируем запрос базы данных в переменую.
    6.  
    7. $res = mysqli_query($link,$sql) or die(mysqli_error($link));// инициализируем запрос в базу данных.
    8. mysqli_connect_error($link); // вывод ошибок внутри базы данных.
    9.  
    10. $row = mysqli_fetch_array($res); // форматируем исходный запрос в массив
    11. print_r($row);
    12. mysqli_close($link); //Закрываем соединение с базой данных
    Добавлено спустя 46 минут 37 секунд:
    да, и не забудь закрывать соединения(последняя строка), так как функция mysqli_query() меняет стандартную кодировку, соответственно и записывает в конвертированом виде, что может привести к смешиванию данных а далее к не предсказуемому поведению :)

    если хочешь перезаписать так же, открываешь новое соединение с стандартной кодировкой и работаешь далее, а чтобы не мучаться напиши себе функцию, в которой переменная для кодировки будет не обязательной.