При создании табллицы принудительно назначил утф. Все показало нормально, но ругается сессия. Если убрать БОМ, то все варнинги пропадают, но появляются кракозябры.
Как быть подскажите пожалуйста.
Здравствуйте. Подскажите пожалуйста как определить кодировку БД на сервере. Этим вопросом задался потому что из таблиц русские символы выводятся знаками вопроса.
Хостинг бесплатный. С БД работаю файлом. Вот одна из попыток узнать кодировку, которая опять ничего не дала (нашел в гугле):
caballero, спасибо, в опере тепрь работает, никаких варнингов не кидает, но ИЕ все также выкидывает то окно и див не прокручивает.
Еще я нашел баг при вводе данных, прег_реплэйс мой пропускал вот такую комбинацию: "214 мкйуксар ло1йр31*", а если поставить просто *, то нет. Решил разобраться с этим, а не копировать, нашел хорошую статью, вроде все понял, но почему-то не работает регулярка с русскими буквами:
Если в поле ввести "а", то получаю "нет", а если ввести "А", то да . Пробовал дописывать символы u(предписывает интерпретировать шаблон как строку в utf-8), i(регистронезависимый поиск), но толку 0. Если в регулярное выражение вписать латинские символы, все работает. В чем проблема тут?
после добавления хедера в самое начало файла, появилась в браузере:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\mc\chat.php:1) in Z:\home\localhost\www\1\chat.php on line 1
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\1\chat.php:1) in Z:\home\localhost\www\mc\chat.php on line 2
Пишу чат. С фреймами.Верхний фрейм отвечает за вывод сообщений, а нижний за поле для их ввода.
Так вот. После того как я нажимаю отправить в нижнем фрейме, у меня остаются данные в поле. Для этого я джаваскриптом из верхнего поля после добавления сообщения в БД обновляю нижний фрейм.
Еще в верхнем фрейме див с сообщениями автоматически прокручивается вниз (джаваскриптом). Кодировку использую утф-8.
Все файлы нотпадом перекодировал в нее, после подключения к БД, mysql_query("SET NAMES utf-8"); написал.
Имею:
1) Хром - все работает замечательно, добавляется, отображается, кракозябр нету, див прокручивается, нижний фрейм обновляется. Но, кстати случилось после того как перекодировал файл в утф-8, вверху каждого фрейма появляется:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\1\chat.php:1) in Z:\home\localhost\www\1\chat.php on line 2
Где-то читал, что на это не нужно обращать внимание, просто скрыть ошибки.
2) Опера - Вместо русских символов кракозябры. Сообщения не добавляются. Джаваскрипт нормально работает.
Перед добавлениям в БД, я поле проверяю так: preg_match('/[a-zа-я0-9]+/iu', $text). Мне кажется что из-за каких-то проблем с кодировкой, это условие не дает добавляться данным в базу.
3) ИЕ - тут вообще какой-то ужас. Данные не добавляются, див не прокручивается. Если я пытаюсь добавить данные, то после нажатия кнопки отправить, получаю окно, как на картинке. В настройках посмотрел стоит кодировка Кириллица (windows), получается ср2151, если поставить утф-8, появляется тоже окно, только нажатием кнопки "повтор", или "отмена" его не убрать - снова появляется. Русские символы отображаются нормально.
В последних двух пишет:
п»ї(???)
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\mc\message.php:1) in Z:\home\localhost\www\mc\message.php on line 1
Если кодировать файлы в утф-8 без БОМ, то и в хроме появляются кракозябры.
спасибо, переменную вывело, но варнинг все равно остался:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\of\proba2.php:1) in Z:\home\localhost\www\of\proba2.php on line 1
Warning:session_start()[function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\localhost\www\of\1.php:3) in Z:\home\localhost\www\of\1.php on line 3
Warning:session_start()[function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\of\1.php:3) in Z:\home\localhost\www\of\1.php on line 3
Извините, я не подумал что между return и echo есть разница и писал в функцию второе, в этом то и была проблема, теперь все в порядке! Спасибо за помощь! (Добавление)
А подскажите пожалуйста, той защиты, которая в функции достаточно? Что стоит добавить еще? Вообще код пропускает только буквы и цифры.
Если добавить вывод после 15 строки, то если просто присвоить функцию от пост_нэйм, то уже будет вывод на экран. А мне выводить не нужно. Мне нужно сравнить пост_нэйм и то, что получилось после очистки, то есть $_POST['name']_clear что ли?
В самом отображении ДЛЕ, в админ панели. Все ссылки/указания/параметры все в кракорябрах. Открывал нотпадом файл админ.пхп, он был кодирован в АНСИ, кодировал в другие кодировки (как уже писал), в файле текст исправлялся. Но я так понимаю что эти ссылки/указания/параметры он берет из других файлов, которые закодированы по-другому.
Можно как-то все файлы разом перекодировать?
Тоха, спасибо! разобрался! Но после установки дле получил всякие крючки вместо русских слов! Пробовал кодировать некоторые файлы дле-шные в утф (без бом), но ничего не помогает(( Что с этим делать?
подскажите пожалуйста как поменять учетную запись в mysql. Было все в порядке. Сейчас попробовал дле поставить, так он не может зарегистрироваться, потому что mysql пишет "отказано" в доступе. Пхмайадмин тоже не включается. Помню когда-то что-то ставил mysqlовское, еще до денвера, то вводил пароль, но тут он не подходит. Дле ставлю на денвер.