LinuxForum.Fans
Тема

Вывод из БД MySQL

Автор: andrey2zxc 6 сообщений 2011 просмотров
#262570

Когда вывожу из БД русские символы, вместо них отображаются ???, пробовал разную кодировку (cp1251, utf-8).

#262596

А какую кодировку вы задавали при создании базы. По умолчанию кажысь кодировка новой базы, при создании, latin1. Нужно при создании указывать её явно utf-8 или прописать её в конфиге мускула.

И как вы именно выводите результат????.

#262603

1. При создании вручную (через phpMyAdmin) таблиц и БД, нужно указывать кодировку "utf8_general_ci".
2. Если вы создаете таблицу/БД через PHP-скрипт, то нужно указывать кодировку соединения с sql-сервером примерно так:

text
mysql_query('set character_set_client="utf8"');
mysql_query('set character_set_results="utf8"');
mysql_query("SET NAMES 'utf8'");

Это нужно делать сразу после подключения к серверу.
3. Кодировка страницы должна быть тоже utf-8, это нужно указывать как на самой странице через meta:

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

, так и для сервера через .htaccess-файл:

text
AddDefaultCharset UTF-8
#262638
kisil написал:
А какую кодировку вы задавали при создании базы. По умолчанию кажысь кодировка новой базы, при создании, latin1. Нужно при создании указывать её явно utf-8 или прописать её в конфиге мускула.

И как вы именно выводите результат????.

При создании БД выбирал кодировку, utf-8.
Вывожу результат с помощью PHP, mysql_fetch_array + printf в цикле.

"metra" написал:
1. При создании вручную (через phpMyAdmin) таблиц и БД, нужно указывать кодировку "utf8_general_ci".
2. Если вы создаете таблицу/БД через PHP-скрипт, то нужно указывать кодировку соединения с sql-сервером примерно так:
mysql_query('set character_set_client="utf8"');
mysql_query('set character_set_results="utf8"');
mysql_query("SET NAMES 'utf8'");
Это нужно делать сразу после подключения к серверу.
3. Кодировка страницы должна быть тоже utf-8, это нужно указывать как на самой странице через meta:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
, так и для сервера через .htaccess-файл:
AddDefaultCharset UTF-8

1. Именно так и делаю
3. Есть

.htaccess файла нет, ибо всё происходит на локальном сервере.

#262661

Забыл упомянуть: второй пункт нужно выполнять при каждом подключении к sql-серверу. Т.е. собрались ли вы создавать базу/таблицу, либо просто вывести пару строк из БД на страницу через mysql_fetch_array - это нужно делать всегда после подключения к серверу и выбору БД.

На пример:

text

mysql_connect(...);
mysql_select_db(...);

mysql_query('set character_set_client="utf8"'); mysql_query('set character_set_results="utf8"'); mysql_query("SET NAMES 'utf8'");

$res = mysql_query("SELECT * FROM any WHERE a > 2") while($obj = mysql_fetch_array($res, MYSQL_ASSOC)) { echo $obj['name']+"<br>"; }

#262745

metra, благодарю. Помогло :)

Войдите или зарегистрируйтесь, чтобы ответить.