Unicode (utf8)

farben

Новичок
Unicode (utf8)

Народ подскажите в чем проблема? посылаю запрос на PHP:
PHP:
$link = mysql_connect($conf_sql_server, $conf_sql_user, $conf_sql_pass)
   or die ('Could not connect to MySQL');
mysql_select_db ($conf_sql_database)
   or die ('Could not select database');
mysql_query ('SET NAMES utf8');
mysql_query ('SET CHARACTER SET utf8');
$sql =  'INSERT INTO test (text)
              VALUES (\''.$str.'\')';
 $result = mysql_query ($sql) or die($sql);
Нужно работать с двумя языками - русским и арабским (поэтому юникод). Русский записывается нормально, а арабский так - ?????
В базе, таблице и apache по умолчанию выставлена utf-8, через phpmyadmin все записывается нормально.
Подскажите пожалуйста, что я делаю не так, как это делает phpmyadmin?
 

berkut

Новичок
а страница хтмл тоже в утф? если из скрипта выбрать строку на русском и вывести - нормально отображается?
 

farben

Новичок
страница тоже в utf-8

-~{}~ 21.02.08 21:23:

с русским вообще ни каких проблем нет, если записать phpmyadmin'ом и запросить скриптом то проблем ни с русским ни с арабским нет выводится нормально
 

farben

Новичок
Автор оригинала: Mols
м-м-м... а как спрашиваете из базы ?
PHP:
$sql =  'SELECT * FROM test';
$result = mysql_query ($sql) or die($sql);
while ($row = mysql_fetch_array ($result) )
         echo '<div>'.$row['text'].'</div>';
и все нормально
 

Gas

может по одной?
а где set names ?
так нормально или не нормально?

На такие вопросы вообще сложно отвечать, потому что много неизвестных - кодировки таблицы(полей), соединения, страницы с которой уходят данные, как они потом показываются (реальные кодировки, а то в html'е одно, в хедерах другое, в голове третье).
 

farben

Новичок
использую денвер, phpmyadmin записывает арабский а я не могу, измучился, разобраться, чего он (phpmyadmin) делает не могу, сложно там все для меня, может конечно и разберусь, но может все таки кто ни будь подскажет

-~{}~ 21.02.08 21:46:

Автор оригинала: Gas
а где set names ?
так нормально или не нормально?
без set names читает

-~{}~ 21.02.08 21:51:

а если записать без set names, то в базе поличтся что то типа ваыين и при запросе этой карказябры и выводе в браузер
PHP:
$sql =  'SELECT * FROM test';
$result = mysql_query ($sql) or die($sql);
while ($row = mysql_fetch_array ($result) )
         echo '<div>'.$row['text'].'</div>';
выводится и русский и арабский текст только с ошибками (некоторые символы)
 

Фанат

oncle terrible
Команда форума
farben
причина в том, что какое-то из перечисленных тобой условий не выполнено.
ищи - какое
 

Gas

может по одной?
farben
тут совет может быть только один - во всей цепочке должны быть одна кодировка.
Для занесения в базу: страницы c формой, в скрипте set names перед записью, таблицы (и поля) - тогда всё занесётся правильно. Для вывода нужно - перед выборкой сделай set names и кодировка страницы должны быть указана правильная (проверь нет ли ещё хедера, который перебивает charset в html). Всё.
 
Сверху