Проблем с UTF-8 и кирилица в PHP

ivo_pi4a

Registered
Предполагам, че доста от хората тук са се сблъсквали със следния проблем. Извинявам се ако вече е пускана такава тема, но аз не успях да я намеря. Значи проблема е следния: В MySQL имам поле real_name, което може да е на всякакъв език, но това не е проблем, понеже charset-а е utf8-general_ci. Когато се опитвам да изобразя нещо, което е записано на кирилица в полето real_name и ми излиза ?????, потърсих в google за решение на този проблем, но нищо не помогна. Страницата също има utf8 encoding :
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Благодаря предварително на всички отговорили :)
 
Проблема си остана даже след изпълнение на заявката. Ето я и самата функция за връзка с БД:
PHP:
function db_init()
{
    mysql_connect('192.168.1.3','username','password') or die('Грешка с базата данни!');
    mysql_select_db('db_users');
    mysql_query('SET NAMES UTF-8');
}
 
В config.php сложи:
PHP:
mysql_query('SET NAMES utf8', $connect);

$connect ти е променливата, в която записваш user, pass, host и тн. :)
Попринцип може и без нея:
PHP:
mysql_query("SET NAMES utf-8");

EDIT: Пробвай и с:
PHP:
header ('Content-type: text/html; charset=utf-8');
 
ivo_pi4a каза:
Проблема си остана даже след изпълнение на заявката. Ето я и самата функция за връзка с БД:
PHP:
function db_init()
{
    mysql_connect('192.168.1.3','username','password') or die('Грешка с базата данни!');
    mysql_select_db('db_users');
    mysql_query('SET NAMES UTF-8');
}

След като сложиш това изтрий всичко от таблицата и записвай наново. Старите записи, които си записал преди да сложиш това са вече повредени.
 
След като направих TRUNCATE на таблицата и изпълних заявката [sql]SET NAMES UTF8[/sql] на таблицата, която преди това си беше с charset UTF8 направих и попълних следните данни: login=root и real_name= Администратора. След което в PHP изпълних:
PHP:
var_dump($row); // $row е реда с резултата
и получих следния реултат:
array(7) { ["user_id"]=> string(1) "1" ["login"]=> string(4) "root" ["pass"]=> string(32) "21232f297a57a5a743894a0e4a801fc3" ["real_name"]=> string(14) "??????????????" ["type"]=> string(1) "2" ["active"]=> string(1) "1" ["group_id"]=> string(1) "4" }
А real_name е сложена да е Администратора. Проблема си остана :(
 
Пробвай така:
2937203I.jpg
 
Реших проблема. Заявката [sql]SET NAMES utf8[/sql] не помогна понеже те вече бяха UTF-8. Проблема се реши с добавянето на заявка [sql]SET CHARACTER SET utf8[/sql] Тази заявка трябва да се изпълнява всеки път, след свързване с БД.
 

Back
Горе