Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 018 105 раз!

Форум

Добро пожаловать, Гость!

Проблема с кодировкой

Обсуждение проблем в работе программного комплекса
ego
Сообщения: 10
C нами: 5 лет 2 мес

Непрочитанное сообщение ego » 22 сен 2011, 18:07

Здравствуйте, уважаемые разработчики и пользователи!


Пожалуйста, помогите разобраться с проблемой. Использую Open Server 2.8.1 и хотел вывести из БД данные через php, но получаю вместо понятного текста — вопросительные знаки.

Привожу код страницы mysql.php, при помощи которого хотел получить данные из таблиц БД:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Соединяемся с БД</title>
</head>

<body>

<?php

$db = mysql_connect("openserver","ego","12345"); /* соединяемся с БД, получаем id и передаем его в переменную */
mysql_select_db("firstdb",$db); /* выбираем БД и передаём идентификатор через переменную $db */

$result = mysql_query("SELECT * FROM firma",$db); /* выбираем все столбцы из таблицы firma */
$myrow = mysql_fetch_array($result); /* вытаскивает самую пермую запись как массив */

echo $myrow['dol'];


?>


</body>
</html>


вот, что я получаю на страницу view-source:http://php.loc/mysql.php:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

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

<title>Соединяемся с БД</title>

</head>



<body>



????????



</body>

</html>


Ребят, прошу не обращать внимания на /* комментарии */, т. к. я только начинаю постигать PHP и мне так удобнее, описывать все шаги.
Если от меня требуется любая информация, пожалуйста, дайте знать; с радостью предоставлю.

ego
Сообщения: 10
C нами: 5 лет 2 мес

Непрочитанное сообщение ego » 22 сен 2011, 18:22

Проблему удалось решить при помощи добавления следующих строк:

mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");


нынешний код страницы mysql.php выглядит так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Соединяемся с БД</title>
</head>

<body>

<?php

$db = mysql_connect("openserver","ego","12345"); /* соединяемся с БД, получаем id и передаем его в переменную */
mysql_select_db("firstdb",$db); /* выбираем БД и передаём идентификатор через переменную $db */

mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");

$result = mysql_query("SELECT * FROM firma",$db); /* выбираем все столбцы из таблицы firma */
$myrow = mysql_fetch_array($result); /* вытаскивает самую пермую запись как массив */

echo $myrow['dol'];


?>


</body>
</html>

ego
Сообщения: 10
C нами: 5 лет 2 мес

Непрочитанное сообщение ego » 22 сен 2011, 18:24

Ребят, а где найти файл my.cnf, чтобы там сразу задать нужные параметры?

Аватара пользователя
duxabilii
Сообщения: 216
C нами: 5 лет 5 мес
Контакты:

Непрочитанное сообщение duxabilii » 22 сен 2011, 21:04

ego писал(а):Ребят, а где найти файл my.cnf, чтобы там сразу задать нужные параметры?

Дополнительно => Шаблоны => Конфиг MySQL

ego
Сообщения: 10
C нами: 5 лет 2 мес

Непрочитанное сообщение ego » 22 сен 2011, 21:16

Спасибо за Ваш ответ.

Аватара пользователя
Максим
Сообщения: 4872
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 22 сен 2011, 21:26

Там уже прописаны такие параметры. Вообще кодировку правильно прописывать в скрипте, но вам повезло, если вам надо utf-8, то она уже прописана в my.ini но она не работает для пользователя root. Создайте нового пользователя, со всеми правами кроме SUPER и подключайтесь к базам через него, тогда не придется прописывать кодировку в своих скриптах.

ego
Сообщения: 10
C нами: 5 лет 2 мес

Непрочитанное сообщение ego » 22 сен 2011, 21:39

Благодарю. Удалил пользователя и создал нового, убрав при создании галочку с [ ] SUPER (см. скриншот в аттаче). ;)
Теперь всё ок, и могу использовать без указания кодировки после соединения:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Соединяемся с БД</title>
</head>

<body>

<?php

$db = mysql_connect("openserver","ego","12345"); /* соединяемся с БД, получаем id и передаем его в переменную */
mysql_select_db("firstdb",$db); /* выбираем БД и передаём идентификатор через переменную $db */

$result = mysql_query("SELECT * FROM firma",$db); /* выбираем все столбцы из таблицы firma */
$myrow = mysql_fetch_array($result); /* вытаскивает самую пермую запись как массив */

echo $myrow['dol'];


?>


</body>
</html>

tima_jr
Сообщения: 1
C нами: 5 лет 2 мес

Непрочитанное сообщение tima_jr » 23 сен 2011, 17:15

Добрый день, Всем!
У меня возникла аналогичная проблема, но с MSSQL Server.
Выполняя запрос:
$qselect=mssql_query("SELECT theDescription FROM CountAllAlarms");
$qn=mssql_num_rows($qselect);
echo "{$qn}";
echo "<table>";
for($qi=0;$qi<$qn;$qi++)
echo "
<tr>
<td>",mssql_result($qselect,$qi,"theDescription"),"</td>
</tr>";
echo "</table>";

я получаю:
?????? ??????
?????? ??????
?????? ??????

Это в место русских названий. Английские отображаются нормально.
Подскажите в чем может быть проблема?

vvvvvv.serguis
Сообщения: 3
C нами: 2 года 11 мес

Непрочитанное сообщение vvvvvv.serguis » 30 дек 2013, 15:08

Здравствуйте!
Использую версию OpenServer 4.9.
Страницы открываются нормально (графика и стили) а вот скодировкой непонятные вещи происходят:
Вместо русского текста -- ромбы с вопросами.
Кодировка страницы -- utf-8
В браузере включена -- utf-8.
В настройках Openserver -- Не задано (рекомендуется)
Проблема перманентно решается переключением кодировки браузера с utf-8 на windows-1251, но не вариант это делать при каждом переходе по ссылке и просмотре кода страницы...

Кто виноват и что делать?

Спасибо.

Аватара пользователя
Максим
Сообщения: 4872
C нами: 5 лет 11 мес
Контакты:

Непрочитанное сообщение Максим » 30 дек 2013, 15:13

Ну как кто виноват, вы и виноваты. У вас страница сохранена (либо формируется) в кодировке windows-1251, а не utf-8. Это как бы само собой очевидно, поскольку страница нормально отображается при переключении в браузере на windows-1251.


Вернуться в «Ошибки Open Server»

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и 2 гостя