|
|
|
| Дорого времени суток .....
Просто незнаю как с этими краказяблами уже бороться ....
Сайт работает на utf8
всё впринципе работает но вот в тегах(формируются из поисковых запросов на сайте) почему то постоянно появляются кракозяблы .... причём я когда добавляю то их нет .....:(
помогите разобраться ..... очень нужно ...... уже устал бороться ....=(
ссылка посмотреть http://newspile.ru | |
|
|
|
|
|
|
|
для: m@rchello
(19.06.2008 в 14:22)
| | Данные в таблице mysql в какой кодировке | |
|
|
|
|
|
|
|
для: mihdan
(19.06.2008 в 14:39)
| | utf8 так же как и все остальные которые вы видите ..... новости и тд, файлы тоже в utf-8 | |
|
|
|
|
|
|
|
для: m@rchello
(19.06.2008 в 14:52)
| | в принципе так и длжно быть, ведь запросы приходят в win-1251 кодировке. Их нужно перекодировать перед выводом. iconv(); пробовали?
кстати, я смотрю, у Вас скрипт новости обрезает некорректно, байт в конце остается. Так что, почитайте о функциях iconv и mb_substr, не пожалеете:) | |
|
|
|
|
|
|
|
для: amigo62
(19.06.2008 в 15:03)
| | >в принципе так и длжно быть, ведь запросы приходят в win-1251 кодировке.
Почему Вы так решили? | |
|
|
|
|
|
|
|
для: Trianon
(19.06.2008 в 15:35)
| | Как минимум потому, что данная тема имеет место быть:)))) | |
|
|
|
|
|
|
|
для: amigo62
(19.06.2008 в 16:32)
| | Читайте внимательнее:
Сайт работает на utf8
всё впринципе работает
|
какая тут к фигам 1251? | |
|
|
|
|
|
|
|
для: Trianon
(19.06.2008 в 17:05)
| | а внизу что??? или, может, дизайнер для красоты эти закорючки приписал? ЛОЛ | |
|
|
|
|
|
|
|
для: amigo62
(19.06.2008 в 17:21)
| | > а внизу что???
А что там у Вас внизу нам по барабану:) Вы тут сказали, что запросы приходят в windows-1251 - это чистейшая глупость, потому что объявлена кодировка UTF-8 - и в ней и будут приходить запросы.
Adios, amigo:)) | |
|
|
|
|
|
|
|
для: BinLaden
(19.06.2008 в 17:32)
| | Повторю ещё разок
кадировка файлов utf8
Кодировка базы utf8
мета заголовок (HTML) utf8
+ в php header('Content-type:text/html; charset=utf-8');
Потому то я тему и создал что непонятно откуда эти кракозяблы и как с ними бороться ...=(
Возможно кто подскажет как фильтр сделать или возможно регулярка как то сможет помочь. ....
Есть какие то размышления? | |
|
|
|
|
|
|
|
для: m@rchello
(19.06.2008 в 19:04)
| | Скрипт поиска покажите, возможно причина кроется там, потому как ничего другого не наблюдаю | |
|
|
|
|
|
|
|
для: mihdan
(19.06.2008 в 19:05)
| |
function add_tag($tag)
{
if (strlen($tag)>=3 && strlen($tag)<=30)
{
$sql = "SELECT `id` FROM `m_tags` WHERE `tag`='" . $tag . "'";
$query = mysql_query($sql) or die(mysql_error());
if (!mysql_num_rows($query))
{
$sql = "INSERT INTO `m_tags` (`tag`) VALUES ('" . $tag . "')";
$query = mysql_query($sql) or die(mysql_error());
} else
{
$sql = "UPDATE `m_tags` SET `rating`=(`rating`+1) WHERE `tag`='" . $tag . "'";
$query = mysql_query($sql) or die(mysql_error());
}
}
}
|
Это код добавления тега .... перед этим предложение введённое в поле поиска разбивается по словам ...
$words = explode(' ', $search);//где $search это наш поисковый запрос
|
| |
|
|
|
|
|
|
|
для: m@rchello
(19.06.2008 в 19:13)
| | а запрос-то откуда берем? | |
|
|
|
|
|
|
|
для: Trianon
(19.06.2008 в 19:19)
| | $search = $_GET['search']; | |
|
|
|
|
|
|
|
для: m@rchello
(20.06.2008 в 17:19)
| | $search = $_GET['search']; конвертируете в UTF-8??? | |
|
|
|
|
|
|
|
для: m@rchello
(20.06.2008 в 17:19)
| | В переменную $_GET['search'] текст попадает из поля формы некоторой страницы.
Эта страница (с формой) в кодировке utf-8?
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Trianon
(20.06.2008 в 17:42)
| | Конвертировать в utf-8 - нет не конвертирую.......
Страничка с формой в utf-8 ....... там всё в utf-8 ...... в форме поиска ОДНО поле search ....
Форма передаётся методом GET ......
принимаем данные
$search = @$_GET['search'];
$words = explode(' ', $search);
for($i=0;$i<count($words);$i++)
add_tag($words[$i]);
function add_tag($tag)
{
if (strlen($tag)>=3 && strlen($tag)<=30)
{
$sql = "SELECT `id` FROM `m_tags` WHERE `tag`='" . $tag . "'";
$query = mysql_query($sql) or die(mysql_error());
if (!mysql_num_rows($query))
{
$sql = "INSERT INTO `m_tags` (`tag`) VALUES ('" . $tag . "')";
$query = mysql_query($sql) or die(mysql_error());
} else
{
$sql = "UPDATE `m_tags` SET `rating`=(`rating`+1) WHERE `tag`='" . $tag . "'";
$query = mysql_query($sql) or die(mysql_error());
}
}
}
|
вот так вот ..... | |
|
|
|
|
|
|
|
для: m@rchello
(20.06.2008 в 18:27)
| | Что не конвертируете - правильно.
Методика добавления у Вас крайне тормозная, но без особых ляпов.
Из-за отсутствия экранирования конечно существует нарушение работы на кавычках и обратных слэшах, уязвимость SQL-injection, (как минимум при выключенных magic quotes), но такой эффект, как у Вас, это всё давать не должно.
А если прямо перед добавлением влепить отладочный вывод:
if (!mysql_num_rows($query))
{
echo "New tag: $tag<br>\r\n";
$sql = "INSERT INTO `m_tags` (`tag`) VALUES ('" . $tag . "')";
|
то в нем тоже кракозябры ползут?
Вы говорите, что страница с формой у Вас в utf-8.
Там стоит header("Content-type: text/html ; charset=utf-8"); ? | |
|
|
|
|
|
|
|
для: Trianon
(20.06.2008 в 19:51)
| | Да header("Content-type: text/html ; charset=utf-8"); это есть .......
Отладочный вывод уже делал ...... и когда я сам записи добавляю ...... всё работает норм и русские и английские символы ...... но если я сам добавляю кракозябры, то само сабой эти же кракозябры и остаются ....
А возможно ли отследить добавление кракозяблов?
Тоесть допустим разрешить добавление только русских (чистых), латинских символов знака "-" и цифр?
что касается SQL-injection, не досмотрел ...... закрыл mysql_escape_string() | |
|
|
|
|
|
|
|
для: m@rchello
(24.06.2008 в 14:07)
| | >Да header("Content-type: text/html ; charset=utf-8"); это есть .......
>Отладочный вывод уже делал ...... и когда я сам записи добавляю ...... всё работает норм и русские и английские символы ......
То есть всё работает.
>но если я сам добавляю кракозябры, то само сабой эти же кракозябры и остаются ....
Так а что Вы хотите?
Вы добавляете слово - оно добавляется. Цензуре эти слова Ваш скрипт не подвергает. | |
|
|
|
|
|
|
|
для: Trianon
(24.06.2008 в 18:33)
| | >>но если я сам добавляю кракозябры, то само сабой эти же кракозябры и остаются ....
>
>Так а что Вы хотите?
>Вы добавляете слово - оно добавляется. Цензуре эти слова Ваш скрипт не подвергает.
это и так понятно ..... потому то я и спрашиваю как отследить символы!?=( | |
|
|
|
|
|
|
|
для: m@rchello
(24.06.2008 в 19:05)
| | определить критерий, который бы позволил отличить плохие слова от хороших. | |
|
|
|