Neverov.net
04.07.2016 12:27
0
Сделал всё как пишется http://www.cyberforum.ru/php-database/thread198468.html.
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 отображаются иероглифы, а если вывести запись на сайт то отображается как надо.
[[upload]2.JPG[[/upload]]
[[upload]1.JPG[[/upload]]
Roman P.
04.07.2016 12:39
0
Скрипт уже изначально в базу записывает данные в неверной кодировке судя по второму скриншоту.
Попробуйте сделать примерно так:
// Подключаемся к 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.net
04.07.2016 12:43
0
Сделал. У меня нет HTML файлов, только php
Не помогло. Разве не должна была эта строчка решить проблему (iconv( 'cp1251', 'utf-8', $_POST['message'] );) ?
Neverov.net
04.07.2016 12:51
0
iconv( 'cp1251', 'utf-8', $_POST['message'] );
Убрал её изначально не было. Один из советов на форуме. Не реагирует на это никак.
PDO не использую. Первый раз вижу ))
Roman P.
04.07.2016 13:14
0
Это какая-то готовая CMS либо самописная?
Neverov.net
04.07.2016 13:33
0
Самописная.
Просто, всё что мог найти найти по данной теме на форумах уже применил.
Единственное что нету доступа к Файл конфигурации MySQL: my.cnf ((
vivasoft
04.07.2016 14:16
0
Если вам нужна
iconv('cp1251', 'utf-8', $_POST['message']);

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

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

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

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

Линк на страничку дадите?)
Neverov.net
04.07.2016 14:20
0
Там внизу:
$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, потому что нравится ))) Встречал на форумах что полезно.)
[[upload]1.JPG[[/upload]]
[[upload]3.JPG[[/upload]]
Neverov.net
04.07.2016 15:31
0
Если в БД вбить на русском текст и вывести на сайт то вот такая фигня. (рисунок ниже)
Дайте мне доступ к Файл конфигурации MySQL: my.cnf !!!
Или идти бубен покупать ))
cdn.adm.tools/forum_message/0393/98/1.JPG
rudenko
04.07.2016 15:57
1
Есть подозрение, что вы используете для работы с БД библиотеку mysqli, а настройки передаете mysql функциями. Поэтому все и не работает. Запросы идут через одну библиотеку, а настройки через другую.
Исправьте все mysql_query на mysqli_query
Neverov.net
04.07.2016 16:06
0
Всё решилась, проблема
mysqli_set_charset($CONNECT, "utf8");
И чего это строчка такая секретная ??? Весь день убил на решение этой проблемы.
И всё таки я не понимаю почему без неё не работает нормально.
vivasoft
04.07.2016 17:29
1
И всё таки я не понимаю почему без неё не работает нормально.
© Neverov

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

P.S. я думаю будет полезно прочитать и зазубрить www.phptherightway.com
Neverov.net
04.07.2016 19:33
0
Будущее за ООП ??? )))
vivasoft
05.07.2016 08:42
1
Будущее за ООП ??? ))) © Neverov


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

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

Лагерь воинственных процедурников: blogerator.ru/page/oop_why-objects-have-failed
Neverov.net
05.07.2016 09:08
1
Ну мозги само собой.
Да понимаю, просто много уже встречал про ООП и в основном что то типа (это новый этап в развитии программирования). Но успел заметить что для простых задач он слишком сложный.
Спасибо за статейку, очень интересная.
vivasoft
05.07.2016 12:10
0
Но успел заметить что для простых задач он слишком сложный.© Neverov

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