OVH Community, votre nouvel espace communautaire.

mysql & utf-8 -> problme l'insertion mysql_query()


evaisse
04/08/2009, 01h07
Voil j'ai une chane utf-8 'Мы предлагаем Вам услуги на заказ!' crite en dur dans du code php. Le code en question est dans un fichier encod en utf-8 (sans BOM bien sr), dans une table mysql "SET CHARACTER SET UTF8" dans une base mysql utf8 :

CREATE TABLE IF NOT EXISTS `ps_i18n` (
`id` int(10) NOT NULL auto_increment,
`key` varchar(260) character set utf8 collate utf8_bin NOT NULL,
`ru` text character set utf8 collate utf8_bin,
`type` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`id`),
UNIQUE KEY `key` (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
le fichier php commence par :
Code:

et mme pour pas que vous posiez la question, le header est en utf-8

Code:
header('Content-type: text/html; charset=utf-8');
le htaccess aussi
Code:
AddDefaultCharset UTF-8
comme le html
Code:
bref tout ce qui peut tre utf-8 est utf-8.

Pourtant, quand je fais :

Code:
mysql_query('UPDATE ps_i18n SET ru="Мы предлагаем Вам услуги на заказ!" 
   WHERE `key` = "koko" );
la base enregistre :
Code:
"œ‹ п€едлагаем ’ам ƒслƒги на зака";
ma connexion mysql qu'elle soit suivie de rien ou des directives d'encodage de mysql ne changent rien :

Code:
        mysql_query("SET NAMES 'utf8'");
        mysql_set_charset('utf8',$db);
        mysql_query("SET NAMES 'UTF8'");
        mysql_query('SET NAMES utf8');
        mysql_query('SET CHARACTER SET utf8');
        mysql_query("SET CHARACTER SET 'utf8'");
        mysql_query("SET COLLATION_CONNECTION = 'utf8_bin'");
        mysql_query("SET COLLATION_SERVER = 'utf8_bin'");
        mysql_query("SET CHARACTER_SET_SERVER = 'utf8'");
        mysql_query("SET CHARACTER_SET_DATABASE = 'utf8'");
        
        mysql_query("SET character_set_results = 'utf8_bin',
                         character_set_client = 'utf8',
                         character_set_connection = 'utf8',
                         character_set_database = 'utf8',
                         character_set_server = 'utf8',
                         collation_connection='utf8_bin',
                         collation_database='utf8_bin',
                         collation_server='utf8_bin'");
        mysql_query("SET NAMES 'utf8'");
        mysql_query("SET character_set_results = 'utf8_bin'");
a fait des heures que je me tape la tte avec a, je parcours les forums internationaux de mysql... A L'AIDE
pour info, avec sqlite a marche nikel, comme de bien entendu.