Страница 1 из 2

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

Добавлено: 22 сен 2011, 18:07
ego
Здравствуйте, уважаемые разработчики и пользователи!


Пожалуйста, помогите разобраться с проблемой. Использую 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 и мне так удобнее, описывать все шаги.
Если от меня требуется любая информация, пожалуйста, дайте знать; с радостью предоставлю.

Re: Проблема с кодировкой при вытягивании данных на страницу

Добавлено: 22 сен 2011, 18:22
ego
Проблему удалось решить при помощи добавления следующих строк:
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>

Re: Проблема с кодировкой при вытягивании данных на страницу

Добавлено: 22 сен 2011, 18:24
ego
Ребят, а где найти файл my.cnf, чтобы там сразу задать нужные параметры?

Re: Проблема с кодировкой при вытягивании данных на страницу

Добавлено: 22 сен 2011, 21:04
duxabilii
ego писал(а):Ребят, а где найти файл my.cnf, чтобы там сразу задать нужные параметры?
Дополнительно => Шаблоны => Конфиг MySQL

Re: Проблема с кодировкой при вытягивании данных на страницу

Добавлено: 22 сен 2011, 21:16
ego
Спасибо за Ваш ответ.

Re: Проблема с кодировкой при вытягивании данных на страницу

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

Re: Проблема с кодировкой при вытягивании данных на страницу

Добавлено: 22 сен 2011, 21:39
ego
Благодарю. Удалил пользователя и создал нового, убрав при создании галочку с [ ] 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>

Re: Проблема с кодировкой при вытягивании данных на страницу

Добавлено: 23 сен 2011, 17:15
tima_jr
Добрый день, Всем!
У меня возникла аналогичная проблема, но с 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>";
я получаю:
?????? ??????
?????? ??????
?????? ??????
Это в место русских названий. Английские отображаются нормально.
Подскажите в чем может быть проблема?

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

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

Спасибо.

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