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 :: POST-форма присылает в БД иероглифы.
Текст в БД вставляется видимо в непонятной кодировке, ибо ставил для БД кодировку и utf8 и cp1251. С помощью запросов, и в phpMyAdmin. Т.е. и в phpMyAdmin и при выводе на страницу иероглифы вида "ывпаывдацал ьцвл СЊ".
Важно: если зайти через phpMyAdmin в запись таблицы и уже там ввести значения полей на русском - все нормально отображается. Соответственно я сделал вывод, что POST-запрос присылает в непонятной кодировке.
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Помог: 75 раз(а)
metra пишет:
2. POST в какой кодировке отсылает всегда?
какая кодировка страницы
metra
Отправлено: 13 Января, 2011 - 20:01:21
Гость
Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
Ставлю в meta UTF-8.
Когда сохраняю страницу UTF-8 без BOM.
SAD
Отправлено: 13 Января, 2011 - 20:02:40
Постоянный участник
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Помог: 75 раз(а)
ну вот тогда нужно как раз и конвертить как я сказал
metra
Отправлено: 13 Января, 2011 - 20:07:38
Гость
Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
Объясните мне пожалуйста.
Страница в UTF-8, соответственно форма отправляет данные в той же кодировке. Они приходят скрипту в переменные, которые потом используются для вставки в базу данных, которая опять же в urf8_general_ci.
В составе utf8 есть кириллица.
1. Почему при вставке urf8-данных в utf8_general_ci-базу они отображаются иероглифами, а не кириллицей, которая есть в составе кодировки.
2. Зачем кодировать данные в cp1521?
Мне очень важно понять этот внутренний механизм.
Саныч
Отправлено: 13 Января, 2011 - 22:40:32
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Дело не в том, в какой кодировке у вас ячейка в базе (хотя в этом тоже, но не самое главное), а в том, в какой кодировке БД "общается" с вами...
пропишите эти строки сразу после подключения к базе
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
metra
Отправлено: 14 Января, 2011 - 07:19:51
Гость
Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
Саныч, это единовременно нужно сделать (т.е. в моем случае это нужно прописать в файл install.php, в котором идет создание таблиц и т.п.) или при каждом коннекте?
P.S.: заработало. Без iconv.
evgenijj
Отправлено: 15 Января, 2011 - 00:19:52
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
metra пишет:
при каждом коннекте
При каждом коннекте
Этими строчками мы сообщаем БД: все данные, которые надо вставить -- в UTF-8, все данные, которые я жду от БД -- должны быть в UTF-8
Покинул форум
Сообщений всего: 85
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
evgenijj, то есть получается данные операции действуют в рамках mysql_connect и mysql_close (либо по факту завершения работы скрипта - там mysql_close сам вызывается)?
SovaBarmak
Отправлено: 23 Января, 2011 - 12:38:35
Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Янв. 2011
Помог: 0 раз(а)
У меня та же проблема что и у автора темы, сделал так как сказал Саныч. Теперь вообще жесть) в базу приходят знаки вопроса и на сайт выводятся знаки вопроса. Это если создавать новые данные, а старые на сайте теперь не на русском, а в тех иероглифах что и в базе. Может это как-то связано с тем что хостинг американский?
такие старые: выавыавыа
выаыаывавыа
выа.
Покинул форум
Сообщений всего: 1
Дата рег-ции: Март 2011
Помог: 0 раз(а)
У меня проблема похожая, но описанные здесь методы не помогли решить проблему.
Суть проблемы:
1. Есть html-форма (кодировка файла и заголовок HTML = utf-8), которая отправляет данные в php-скрипт (кодировка файла utf-8)
2. php-скрипт подключается к базе данных MySQL, используя команды:
mysql_query('set character_set_client="utf8"');
mysql_query('set character_set_results="utf8"');
mysql_query('set collation_connection="utf8_general_ci"');
3. php-скрипт вставляет данные в БД (БД создана в utf8_general_ci, таблица создана с DEFAULT CHARSET=utf8)
4. Символы сохраняются в таблице в виде знака ?
P.S. Данными является текст из китайских иероглифов (кириллицу и латынь сохраняет корректно). Плюс если вставлять запись через PhpMyAdmin, то иероглифы сохраняются корректно. А также выборка из БД с уже сохранёнными данными из иероглифов и дальнейшее отображение в браузере происходит корректно. Тестировал на Денвере, у которого в httpd.conf также указал кодировку utf8.
Люди добрые, помогите решить вопрос со вставкой иероглифов из php-скрипта в БД MySQL.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.