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
Форумы портала PHP.SU :: Версия для печати :: проблема с кодировками и базой
Форумы портала PHP.SU » » Кодировки и все смежное » проблема с кодировками и базой

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

1. Arcoslov - 05 Марта, 2015 - 18:52:41 - перейти к сообщению
Здравствуйте.

Помогите, пожалуйста, решить проблему с сайтом. Переношу сайт с хостинга на хостинг. База mysql.
В phpmyadmin вижу:
Server connection collation: utf8_general_ci
Collation базы: utf8_general_ci,; collation всех таблиц utf8_general_ci

Файл базы (.sql) у меня на компе - в формате utf8. Русский текст читабелен. Импортировал как utf8. Вся текущая инфа, которая достаётся из базы, выглядит по-русски.

Однако, вся новая инфа, которая через сайт добавляется в базу, в базе выглядит как г Москва, и в последствии на сайте она выглядит так же.

На данный момент у меня на сайте такая конструкция:

PHP:
скопировать код в буфер обмена
  1. $connection=new mysqli($host, $user, $pass, $db);
  2. if (!$connection->set_charset("utf8")) {
  3.     printf("Ошибка при загрузке набора символов utf8: %s\n", $connection->error);
  4. } else {
  5.     printf("Текущий набор символов: %s\n", $connection->character_set_name());
  6. }

она мне говорит, что "Текущий набор символов: utf8".

В коде сайт ничего не конвертит вроде бы.
От чего ж оно? )

p.s. сам сайт полностью в utf8, в htaccess прописано AddDefaultCharset utf-8, контент страниц сайта, что не из базы, отображается нормально.

p.p.s. декодер лебедева говорит, что это utf8 -> cp1252
Не понял

есть какой-то вариант для начала проверить, в каком виде поступают данные в базу? они такие туда уже постаупают или это база чё-то крутит?
2. Arcoslov - 08 Марта, 2015 - 12:49:26 - перейти к сообщению
появилась дополнительная информация.

База уже получает данные в корявом виде.

Как работает код:
первом файле php есть форма.
Во втором - код для обращения и инсерта данных в базу.
Когда в первом файле нажимается кнопка сохранить, она через js методом post передаёт данные во второй файл, чтобы там произошла запись в базу. Если в этом второмфайле сделать print_r($_REQUEST) в самой первой строчке, то видно, что данные уже приходят корявые. Однако, в первом файле alert непосредственно перед отправкой данных эти самые данные выводит нормально.

Почему при передаче данных они корёжатся?
и, кстати, полученные во втором файле данные почему-то нельзяс iconv сконвертить в utf8 обратно, получаются неопознанные закорючки.

 

Powered by ExBB FM 1.0 RC1