1

После решения последней проблемы, появилась новая. Суть в том, что текст из БД отображает вопросительными знаками(?). Как исправить?

введите сюда описание изображения

Оговорюсь заранее в коде у меня стоит windows-1251 ибо меню на кирилице тоже начинает отображать вопросительными знаками. (смена на utf-8 не помогает).

Код из index.php

<?php
include ("blocks/bd.php");
$result = mysql_query("SELECT title,meta_d,meta_k, text FROM settings WHERE PAGE='index'",$db);
$myrow = mysql_fetch_array($result);
?>

<!DOCTYPE html>
<html>

<head>
<meta name="description" content="<?php echo $myrow['meta_d']; ?>">
<meta name="keywords" content="<?php echo $myrow['meta_k']; ?>">

<meta charset="">
<title><?php echo $myrow['title']; ?></title>
<link rel="stylesheet" href="style.css">

</head>

<body>

<table width="700" border="0" align="center" cellpadding="0" sellspacing="0" bgcolor="#FFFFFF" class="main_border">
<!--Подключаем шапку сайта-->
<? include ("blocks/header.php"); ?>
<tr>
<td><table width="700" border="0" cellpadding="0" sellspacing="0">
<tr>
<?include ("blocks/left.php"); ?>
<td valign="top">
<?php echo $myrow['text']; ?>
</td>
</tr>

</table></td>
</tr>

<? include ("blocks/footer.php"); ?>
</table>
</body>

</html>

Скриншот БД.

введите сюда описание изображения

введите сюда описание изображения

Файл находится в кодировке UTF-8 без ВОМ(Переход на UTF-8 не помогает).

введите сюда описание изображения

Делаю всё на Open Server. БД в MySql Maestro.

UPDATE

Код уроки.пхп

<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Уроки</title>
<link rel="stylesheet" href="style.css">

</head>

<body>

<table width="700" border="0" align="center" cellpadding="0" sellspacing="0" bgcolor="#FFFFFF" class="main_border">
<? include ("blocks/header.php"); ?>

<tr>
<td><table width="700" border="0" cellpadding="0" sellspacing="0">
<tr>
<?include ("blocks/left.php"); ?>
<td><p>Как показала практика. Этот текст никто не читает.</p></td>
</tr>

</table></td>
</tr>

<? include ("blocks/footer.php"); ?>
</table>
</body>

</html>

Код о нас.пхп

<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Уроки</title>
<link rel="stylesheet" href="style.css">

</head>

<body>

<table width="700" border="0" align="center" cellpadding="0" sellspacing="0" bgcolor="#FFFFFF" class="main_border">
<? include ("blocks/header.php"); ?>

<tr>
<td><table width="700" border="0" cellpadding="0" sellspacing="0">
<tr>
<?include ("blocks/left.php"); ?>
<td><p>Наш сайт начал свою работу в декабре 2015 года в Сан-Франциско, штат Калифорния. Traveller.com — это безопасная и надежная площадка, на которой можно сдать, найти и забронировать уникальное жилье в любой точке мира прямо на сайте или с помощью мобильного устройства или планшета.

Будь то квартира на одну ночь, замок на неделю или вилла на месяц, Traveller дарит людям уникальные впечатления от путешествий, по любой цене, в более чем 34 000 городах и 190 странах. Прибавьте к этому глобальную службу поддержки и стремительно растущее сообщество. Traveller — самый легкий путь показать свое свободное жилье миллионам людей и зарабатывать на сдаче его в аренду.</p></td>
</tr>

</table></td>
</tr>

<? include ("blocks/footer.php"); ?>
</table>
</body>

</html>

Код статьи.пхп

<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Уроки</title>
<link rel="stylesheet" href="style.css">

</head>

<body>

<table width="700" border="0" align="center" cellpadding="0" sellspacing="0" bgcolor="#FFFFFF" class="main_border">
<? include ("blocks/header.php"); ?>

<tr>
<td><table width="700" border="0" cellpadding="0" sellspacing="0">
<tr>
<?include ("blocks/left.php"); ?>
<td><p> Статьи </p></td>
</tr>

</table></td>
</tr>

<? include ("blocks/footer.php"); ?>
</table>
</body>

</html>

Код меню.пхп

<td width="185px" valign="top" class="left">
<p align="center" class="title">Навигация</p>
<div id="coolmenu">
<a href="index.php">Главная</a>
<a href="articles.php">Статьи</a>
<a href="lessons.php">Уроки</a>
<a href="about.php">О нас</a>
</div>
</td>

4 Answers4

3

У Вас в БД кодировка UTF-8. В тоже время в теге meta указана windows-1251 Попробуйте изменить кодировку в теге meta

<meta charset="utf8" />

Данные из БД выводите с принудительным указанием кодировки UTF-8.

$con= mysql_connect("servername","username","password");
mysql_select_db("test", $con);
mysql_set_charset("utf8");
$result = mysql_query("SELECT * FROM `new_table`",$con);

Должно помочь.

Streletz
  • 11,734
  • второй абзац до конца. – Artik Slayer Dec 24 '15 at 17:34
  • можно еще добавить mysql_query("SET collation_connection = utf8_general_ci"); – K . Dec 24 '15 at 19:06
  • @streletz Добавил, помогло. Но также оказало обратный эффект. Меню у меня прописано в коде и теперь оно в вопросительных знаках. Скрин http://www.floomby.ru/s2/8gYpvJ/full/ – Artik Slayer Dec 24 '15 at 19:16
  • @ArtikSlayer, подозреваю, что у Вас в коде для меню используется другая кодировка. По идее, нужно всё привести к "общему знаменателю". И ещё, просто на будущее. Старайтесь при описании проблемы выкладывать не только скриншоты, но и код. Так гораздо проще разобраться в проблеме и подсказать решение. – Streletz Dec 24 '15 at 19:29
  • @streletz мне тут ещё порекомендовали писать вместо моего мета, так Резонно ли?+ сейчас обновлю вопрос с кодом. – Artik Slayer Dec 24 '15 at 19:40
2

Как вариант после соединения делать запрос SET CHARACTER SET utf8, либо воспользоваться функцией mysql_set_charset.

Nofate
  • 34,603
2

У вас разные кодировки. Замените пожалуйста:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

На следующий код:

<meta http-equiv="Content-Type" content="text/html; charset=cp1251" />

Однако я и мои коллеги настоятельно вам рекомендуем использовать вам UTF-8

Dima Vasiluk
  • 2,346
  • Второй абзац вопроса + решение уже найдено. Благодарю за помощь. – Artik Slayer Dec 27 '15 at 11:31
1

То, что предлагали на тот момент не помогало. Пришлось пересоздать БД с запросом в консоли: mysql> create database ‘database_name’ DEFAULT CHARACTER SET utf8; Потом после создании таблицы в самих столбцах(полях) при выборе типа данных, указал ещё раз utf-8 (Перестраховался от Default). После,в коде с БД было снова использовано принудительное объявление UTF8, а в остальных файлах <meta charset="utf-8">. Текст, который таскал из БД, в браузере изменился на кракозябру(бессмысленные символы). Затем везде UTF-8 заменил на Windows-1251, а utf8 на cp1251. Всё заработало.