Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблемы с кодировкой в бд

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: dle - 10.0
7erj
Отправлено: 26 Августа, 2015 - 22:28:12
Post Id



Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Янв. 2015  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




Доброй ночи! Появилась очередная проблема, копался в интернете и кое что откопал, но правильно все в голове составить не получается. Помогите, пожалуйста.
У меня есть бд и по всей логике таблицы бд составлены с кодировкой latin1 или юникода..
А содержимое таблиц зашифровано в utf-8. В итоге, когда я дергаю кодом данные - пишет белеберду типа: ерий Влади

Вот код:
PHP:
скопировать код в буфер обмена
  1. //MAIN_VARIABLE
  2. $ipconfig = ip2long($_SERVER['REMOTE_ADDR']);
  3.  
  4. //HOSTS
  5. class OneServ{
  6. var $dsn = 'mysql:dbname=abills;host=localhost';
  7. var $user = 'root';
  8. var $password = '';
  9. }
  10. $one_serv = new OneServ;
  11. /*_____________________________________________________________________________________________________________________________________________________*/
  12. //OPERATION (cycle fon first server)
  13. $pdo = new PDO($one_serv->dsn, $one_serv->user, $one_serv->password);
  14. $pdo->query("SET NAMES utf-8");
  15. $result = $pdo->query("SELECT * FROM bills
  16.                                                                                         JOIN dv_main ON bills.uid = dv_main.uid
  17.                                                                                         JOIN users_bruteforce ON dv_main.ip = users_bruteforce.ip
  18.                                                                                         JOIN users_pi ON bills.uid = users_pi.uid
  19.                                                                                         ");
  20.                                                                                        
  21. foreach ($result as $row) {
  22. $abon_ip = $row['ip'];
  23. $abon_login = $row['login'];
  24. $deposit = $row['deposit'];
  25. $fio = $row['fio'];
  26.  
  27. echo $fio;
  28. if($ipconfig == $abon_ip){
  29.  
  30. echo trim($fio);
  31. }
  32. else{}
  33. }
  34.  
  35. ?>
  36.  

Как видите, в кодt пишу запрос SET NAMES, в utf-8, и в cp1251 на всякий случай пробовал. Но каракули. И видимо по той причине, что выкидывает юникод какой-то, а скрипт пытается перевести его с utf-8. И в итоге такая белеберда.
База большая, так что менять ее это ппц. Можно ли что-то придумать? Может есть какое-то решение?


-----
trust me i'm an engineer
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 26 Августа, 2015 - 23:30:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




7erj пишет:
var
7erj пишет:
var
7erj пишет:
var

Выкинь свой учебник.
Даже какашки мамонта моложе.
Это тебе говорю я -- тот, кто мамонтов погоняет до сих пор.
Не веришь? Спроси у местных -- подтвердят.
7erj пишет:
$one_serv = new OneServ

У тебя сплошное ООП ради ООП, смердит.
Думай нужен тебе класс или нет.
Чем меньше классов/объектов, тем кавайнее код.
А вот экономить, это еще научиться надо.
Но я только в нужную сторону тебя повернул.
Дальше сам набивай мозоль. На лбу. Граблями.
7erj пишет:
таблицы бд составлены с кодировкой latin1 или юникода

Так ты уже определись.
Никаких или.
7erj пишет:
зашифровано в utf-8

utf-8 это не алгоритм шифрования.
7erj пишет:
Может есть какое-то решение?

Начинай:

1) Конвертнуть все таблицы и текстовые поля в них в одну кодировку -- utf-8 (японский генерал цы).
2) Все файлы-скрипты сохранить в кодировке utf-8 без BOM с юниксовым переводом строки "\n" а не "\r\n".
3) После подключения к бидэ сделать запрос SET NAMES 'utf8' ВНИМАНИЕ НА ТО КАК НАПИСАНО утф8!!!!
 
 Top
7erj
Отправлено: 27 Августа, 2015 - 00:21:09
Post Id



Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Янв. 2015  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




DeepVarvar пишет:
Так ты уже определись.

В том и дело, что не знаю.
Работает вот этот код: header('Content-Type: text/html; charset=utf-8');
Но работает только с выводимыми данными, а сайт сходит сума.


-----
trust me i'm an engineer
 
My status
 Top
7erj
Отправлено: 27 Августа, 2015 - 18:18:20
Post Id



Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Янв. 2015  
Откуда: Украина, Запорожье


Помог: 1 раз(а)




Ребята, я наверное тупой, у меня не получается. Давайте так, кто поможет - заплачу за работу. Нужно всего лишь разобраться с кодировкой.


-----
trust me i'm an engineer
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB