Когда вывожу из БД русские символы, вместо них отображаются ???, пробовал разную кодировку (cp1251, utf-8).
Вывод из БД MySQL
А какую кодировку вы задавали при создании базы. По умолчанию кажысь кодировка новой базы, при создании, latin1. Нужно при создании указывать её явно utf-8 или прописать её в конфиге мускула.
И как вы именно выводите результат????.
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А какую кодировку вы задавали при создании базы. По умолчанию кажысь кодировка новой базы, при создании, latin1. Нужно при создании указывать её явно utf-8 или прописать её в конфиге мускула.
И как вы именно выводите результат????.
При создании БД выбирал кодировку, utf-8.
Вывожу результат с помощью PHP, mysql_fetch_array + printf в цикле.
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 файла нет, ибо всё происходит на локальном сервере.
Забыл упомянуть: второй пункт нужно выполнять при каждом подключении к sql-серверу. Т.е. собрались ли вы создавать базу/таблицу, либо просто вывести пару строк из БД на страницу через mysql_fetch_array - это нужно делать всегда после подключения к серверу и выбору БД.
На пример:
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>";
}
metra, благодарю. Помогло :)