Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [Решено] Знаки "?" при выводе информации через php из БД  (Прочитано 21439 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sotnikov16

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Я не человек с вышем образованием, а школьник!
    • Просмотр профиля
Почему при выводе информации из БД, на странице в браузере знаки вопросов. То есть, не корректно выводиться информация?

Сам Apache настроен по умолчанию на кодировку UTF8, файл в формате utf8 без BOM, сопоставление БД MySQL с utf8_general_ci, но при выводе знаки вопросов!

Файл который открывается в браузере:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="Описание страницы" />
<meta name="keywords" content="Ключивые слова" />
<title>Соединение с MySQL сервером</title>
</head>
<body>

<?php

$db 
mysql_connect("localhost","name","password");
mysql_select_db("firstdb",$db);

$result mysql_query("SELECT * FROM firma");
$myrow mysql_fetch_array($result);

echo 
$myrow['name'];

?>


</body>
</html>

Вот таблица которая выводиться:


Он выводит в браузере (исходный текст):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="Описание страницы" />
<meta name="keywords" content="Ключивые слова" />
<title>Соединение с MySQL сервером</title>
</head>
<body>

???????
</body>
</html>

P.S. ОС Ubuntu 10.10 / Apache 2 / MySQL 5.1 + PHP 5.3

ПРОБЛЕМА РЕШЕНА!
добавил после строки подключения к БД MySQL:
$db = mysql_connect("localhost","name","password");
mysql_select_db("firstdb",$db);
строку:
mysql_query("SET NAMES utf8");

Где utf8 - ваша кодировка php файла!
« Последнее редактирование: 14 Февраля 2011, 12:24:31 от Sotnikov16 »
ОС Ubuntu 10.10 (со всеми обновлениями на 09.01.11 точно!)

Оффлайн cebrione

  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #1 : 13 Февраля 2011, 01:41:13 »
После коннекта нужно вставить магические строчки :)
mysql_query("SET NAMES cp1251");
mysql_query("SET CHARACTER SET cp1251");
mysql_query("SET character_set_client = cp1251");
mysql_query("SET character_set_connection = cp1251");
mysql_query("SET character_set_results = cp1251");

Только у вас нужно поменять cp1251 на utf-8.

Оффлайн Sotnikov16

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Я не человек с вышем образованием, а школьник!
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из Б&am
« Ответ #2 : 13 Февраля 2011, 01:50:28 »
После коннекта нужно вставить магические строчки :)
mysql_query("SET NAMES cp1251");
mysql_query("SET CHARACTER SET cp1251");
mysql_query("SET character_set_client = cp1251");
mysql_query("SET character_set_connection = cp1251");
mysql_query("SET character_set_results = cp1251");

Только у вас нужно поменять cp1251 на utf-8.
Где именно надо поменять? У меня же все для utf8. =)
а понял) щас попробую))

Пользователь решил продолжить мысль 13 Февраля 2011, 01:56:06:
Не помогает:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="Описание страницы" />
<meta name="keywords" content="Ключивые слова" />
<title>Соединение с MySQL сервером</title>
</head>
<body>

<?php

$db 
mysql_connect("localhost","name","password");
mysql_select_db("firstdb",$db);

mysql_query("SET NAMES utf-8");
mysql_query("SET CHARACTER SET utf-8");
mysql_query("SET character_set_client = utf-8");
mysql_query("SET character_set_connection = utf-8");
mysql_query("SET character_set_results = utf-8");

$result mysql_query("SELECT * FROM firma");
$myrow mysql_fetch_array($result);

echo 
$myrow['name'];

?>


</body>
</html>
« Последнее редактирование: 13 Февраля 2011, 01:56:06 от Sotnikov16 »
ОС Ubuntu 10.10 (со всеми обновлениями на 09.01.11 точно!)

Оффлайн cebrione

  • Любитель
  • *
  • Сообщений: 92
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #3 : 13 Февраля 2011, 02:01:48 »
http://www.google.com.ua/search?hl=ru&q=mysql+%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B+%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE+%D0%B1%D1%83%D0%BA%D0%B2&aq=0&aqi=g1&aql=&oq=mysql+%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B+=[/url

Тогда методично проверяйте каждый способ)

Сам занимался этой темой. Но совет в пред посте помог.
« Последнее редактирование: 13 Февраля 2011, 02:04:13 от cebrione »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #4 : 13 Февраля 2011, 02:17:41 »
После коннекта нужно вставить магические строчки :)
mysql_query("SET NAMES cp1251");
mysql_query("SET CHARACTER SET cp1251");
mysql_query("SET character_set_client = cp1251");
mysql_query("SET character_set_connection = cp1251");
mysql_query("SET character_set_results = cp1251");

Только у вас нужно поменять cp1251 на utf-8.

Что ты бредишь? У него вывод в utf8.
Тогда либо "SET NAMES cp1251;", либо (и я думаю, это будет правильнее)
SET character_set_client = cp1251 либо utf8 (кодировка запросов должна совпадать с кодировкой текста скриптов, строки в utf8 нужно дополнительно префиксить, если используется отличная от utf8 кодировка)
SET character_set_connection = utf8 (кодировка, в которой запросы передаются серверу)
SET character_set_results = utf8 (кодировка, в которой возвращаются ответы сервера)

Внимание!
Всё это будет работать ТОЛЬКО В ТОМ СЛУЧАЕ, ЕСЛИ КОДИРОВКА БАЗЫ НЕ ОТ ФОНАРЯ, А РЕАЛЬНО СОВПАДАЕТ С ДАННЫМИ, В НЕЙ ХРАНЯЩИМИСЯ.
И если никакой дополнительной перекодировки при выводе данных клиенту не используется.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sotnikov16

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Я не человек с вышем образованием, а школьник!
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #5 : 13 Февраля 2011, 14:46:56 »
После коннекта нужно вставить магические строчки :)
mysql_query("SET NAMES cp1251");
mysql_query("SET CHARACTER SET cp1251");
mysql_query("SET character_set_client = cp1251");
mysql_query("SET character_set_connection = cp1251");
mysql_query("SET character_set_results = cp1251");

Только у вас нужно поменять cp1251 на utf-8.

Что ты бредишь? У него вывод в utf8.
Тогда либо "SET NAMES cp1251;", либо (и я думаю, это будет правильнее)
SET character_set_client = cp1251 либо utf8 (кодировка запросов должна совпадать с кодировкой текста скриптов, строки в utf8 нужно дополнительно префиксить, если используется отличная от utf8 кодировка)
SET character_set_connection = utf8 (кодировка, в которой запросы передаются серверу)
SET character_set_results = utf8 (кодировка, в которой возвращаются ответы сервера)

Внимание!
Всё это будет работать ТОЛЬКО В ТОМ СЛУЧАЕ, ЕСЛИ КОДИРОВКА БАЗЫ НЕ ОТ ФОНАРЯ, А РЕАЛЬНО СОВПАДАЕТ С ДАННЫМИ, В НЕЙ ХРАНЯЩИМИСЯ.
И если никакой дополнительной перекодировки при выводе данных клиенту не используется.
В итоге что нужно прописать в моих файлах?  =) Поподробнее пожалуйста..
ОС Ubuntu 10.10 (со всеми обновлениями на 09.01.11 точно!)

Оффлайн Frankenstein2017

  • Участник
  • *
  • Сообщений: 222
  • Хатуль Мадан
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #6 : 13 Февраля 2011, 15:31:53 »
Когда у меня была такая же проблема, пришлось в файле сразу после подключения к БД добавить
mysql_query("SET NAMES cp1251");Этого хватило. Только обрати внимание на:
1. Какая у тебя коировка в БД.
2. Какая кодировка на страницах, совпадает ли она с БД?
У б у н т а р и и   в с е х   с т р а н ,   о б ъ е д и н я й т е с ь !

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28469
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #7 : 13 Февраля 2011, 18:45:18 »
В итоге что нужно прописать в моих файлах?  =) Поподробнее пожалуйста..

Ты мой ответ ВООБЩЕ ПРОЧИТАЛ? Про "понял" речи пока не веду.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Sotnikov16

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Я не человек с вышем образованием, а школьник!
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #8 : 13 Февраля 2011, 21:44:48 »
Когда у меня была такая же проблема, пришлось в файле сразу после подключения к БД добавить
mysql_query("SET NAMES cp1251");Этого хватило. Только обрати внимание на:
1. Какая у тебя коировка в БД.
2. Какая кодировка на страницах, совпадает ли она с БД?

Спасибо, помогло просто прописать после коннекта к БД:
mysql_query("SET NAMES utf8");

Тема закрыта всем спасибо за советы =)
ОС Ubuntu 10.10 (со всеми обновлениями на 09.01.11 точно!)

Оффлайн Frankenstein2017

  • Участник
  • *
  • Сообщений: 222
  • Хатуль Мадан
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #9 : 13 Февраля 2011, 23:07:28 »
Тема закрыта всем спасибо за советы =)
Добавь в заголовок первого сообщения текст "[Решено]", чтобы остальные могли воспользоваться при необходимости.
У б у н т а р и и   в с е х   с т р а н ,   о б ъ е д и н я й т е с ь !

Оффлайн Sotnikov16

  • Автор темы
  • Новичок
  • *
  • Сообщений: 25
  • Я не человек с вышем образованием, а школьник!
    • Просмотр профиля
Re: Знаки "?" при выводе информации через php из БД
« Ответ #10 : 14 Февраля 2011, 12:20:29 »
Тема закрыта всем спасибо за советы =)
Добавь в заголовок первого сообщения текст "[Решено]", чтобы остальные могли воспользоваться при необходимости.
Хорошо =)
ОС Ubuntu 10.10 (со всеми обновлениями на 09.01.11 точно!)

Оффлайн vbiffm

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Вот спасибо!))) казалось бы мелочь такая, а можно застрять на ней.  :)

 

Страница сгенерирована за 0.052 секунд. Запросов: 24.