• UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(062) 210-24-93  Донецк
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 449-04-21  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 007-72-35  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

MySQL. Кодировка в MySQL

Форумы MySQL Кодировка в MySQL
Neverov
04.07.2016
хостинг: есть
домен: есть
Кодировка в MySQL
Сделал всё как пишут на форумах.
1) Все php фалы настроены в NotePad++ на utf-8 без bom
2) В html страницах везде прописано meta charset= utf-8
3) Все возможные функции по определению кодировки в PHP выдают что строки которые пишутся в БД в кодировке utf-8
4) В phpMeAdmin во всех настройках таблиц стоит utf-8 general ci
6) На всякий случай в код PHP добавлял строки:
mysql_set_charset( 'utf8' );
iconv( 'cp1251', 'utf-8', $_POST['message'] );
И всё равно вот такой бред (картинка 2)
Кто-то может чем-то помочь ?
Т.е. в phpMeAdmin отображаются иероглифы, а если вывести запись на сайт то отображается как надо.
Прикрепленные файлы:
toxi
04.07.2016
хостинг: есть
домен: есть
Скрипт уже изначально в базу записывает данные в неверной кодировке судя по второму скриншоту.
Попробуйте сделать примерно так:
// Подключаемся к mysql серверу
        mysql_query("set character_set_client='utf8'");
        mysql_query("set character_set_results='utf8'");
        mysql_query("set collation_connection='utf8_general_ci'");

либо, если используете PDO:
$db = new PDO('mysql:host=localhost; port=3306; dbname=something', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

А еще все html файлы тоже сохранить в utf8 без bom в дополнение к charset в тегах head.
Закомментируйте или уберите:
iconv( 'cp1251', 'utf-8', $_POST['message'] );
Neverov
04.07.2016
хостинг: есть
домен: есть
Сделал. У меня нет HTML файлов, только php
Не помогло. Разве не должна была эта строчка решить проблему (iconv( 'cp1251', 'utf-8', $_POST['message'] );) ?
Neverov
04.07.2016
хостинг: есть
домен: есть
iconv( 'cp1251', 'utf-8', $_POST['message'] );
Убрал её изначально не было. Один из советов на форуме. Не реагирует на это никак.
PDO не использую. Первый раз вижу ))
toxi
04.07.2016
хостинг: есть
домен: есть
Это какая-то готовая CMS либо самописная?
Neverov
04.07.2016
хостинг: есть
домен: есть
Самописная.
Просто, всё что мог найти найти по данной теме на форумах уже применил.
Единственное что нету доступа к Файл конфигурации MySQL: my.cnf ((
info620
04.07.2016
хостинг: есть
домен: есть
Если вам нужна
iconv( 'cp1251', 'utf-8', $_POST['message'] );

Тогда что-то не так. Совсем не так.

В phpMeAdmin во всех настройках таблиц стоит utf-8 general ci © Neverov

А на колонках? MySQL позволяет задать для колонки свою кодировку.

С какой кодировкой отправляеться форма? Ее можно ж тоже поменять :)

Линк на страничку дадите?)
Neverov
04.07.2016
хостинг: есть
домен: есть
Там внизу:
$Row5 - переменную ввел в БД на русском через phpMyAdmin
$Row6 и $Row7 - переменные вводились в БД на русском с формы сайта

Регулярка на всех полях пока стоит такая !ereg("^[a-zA-zа-яА-Я_]{1,35}$". Это если вдруг номер телефона в цифрах вбивать будете ))

"С какой кодировкой отправляеться форма? Ее можно ж тоже поменять :)"
Не знаю, сайт в кодировке UTF-8 а как задать кодировку форме я не знаю.
(в .htaccess ".AddDefaultCharset utf-8"
в начале кода php "header("Content-Type: text/html; charset=utf-8");"
и в мета "meta charset="utf-8" /" обратную черту ставлю несмотря на то что сайт типа в HTML5, потому что нравится ))) Встречал на форумах что полезно.)
Прикрепленные файлы:
Neverov
04.07.2016
хостинг: есть
домен: есть
Если в БД вбить на русском текст и вывести на сайт то вот такая фигня. (рисунок ниже)
Дайте мне доступ к Файл конфигурации MySQL: my.cnf !!!
Или идти бубен покупать ))
Прикрепленные файлы:
Илья
04.07.2016
хостинг: есть
домен: есть
1
Есть подозрение, что вы используете для работы с БД библиотеку mysqli, а настройки передаете mysql функциями. Поэтому все и не работает. Запросы идут через одну библиотеку, а настройки через другую.
Исправьте все mysql_query на mysqli_query
Neverov
04.07.2016
хостинг: есть
домен: есть
Всё решилась, проблема
mysqli_set_charset($CONNECT, "utf8");
И чего это строчка такая секретная ??? Весь день убил на решение этой проблемы.
И всё таки я не понимаю почему без неё не работает нормально.
info620
04.07.2016
хостинг: есть
домен: есть
1
И всё таки я не понимаю почему без неё не работает нормально.
© Neverov

mysql, mysqli, pdo - три независимые друг от друга библиотеки доступа. Использовать нужно только одну.
Более того у mysqli есть как ООП так и процедурный вариант и пересекать их нельзя.

P.S. я думаю будет полезно прочитать и зазубрить PHP: The Right Way
Neverov
04.07.2016
хостинг: есть
домен: есть
Будущее за ООП ??? )))
info620
05.07.2016
хостинг: есть
домен: есть
1
Будущее за ООП ??? ))) © Neverov


Нет конечно, будущее за мозгами)

Я надеюсь вы понимаете что ООП - просто еще один инструмент. Что-то удобней реализовать в процедурном стиле что то удобней в ООП. И для новичков не рекомендуется их соединять - либо все в одном либо все в другом.

Лагерь воинственных процедурников: Классика ООП - Почему объектно-ориентированное программирование провалилось? [MUST READ]
Neverov
05.07.2016
хостинг: есть
домен: есть
1
Ну мозги само собой.
Да понимаю, просто много уже встречал про ООП и в основном что то типа (это новый этап в развитии программирования). Но успел заметить что для простых задач он слишком сложный.
Спасибо за статейку, очень интересная.
info620
05.07.2016
хостинг: есть
домен: есть
Но успел заметить что для простых задач он слишком сложный. © Neverov

Не только. "Узкие участки" которые создают самую большую нагрузку просто переписав в процедурном стиле без глобальной смени логики можно ускорить - пропадет оверхед что появляется при использование классов и т.п. но такой код сложней поддерживать. А вообще ето очень обширная тема ;)
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Горячая линия
(044)
392 74 33
другие города