ユーザーコンテンツをmysqlデータベースに保存するPHPスクリプトがあります(PHP 5.4、mysql 5.5.31)
私のデータベースのすべての文字列関連のフィールドにはutf8_unicode_ci
照合があります。
私の(簡略化された)コードは次のようになります。
$db_handle = mysql_connect('localhost', 'username', 'password');
mysql_select_db('my_db');
mysql_set_charset('utf8', $db_handle);
// ------ INSERT: First example -------
$s = "je viens de télécharger et installer le logiciel";
$sql = "INSERT INTO my_table (post_id, post_subject, post_text) VALUES (1, 'subject 1', '$s')";
mysql_query($sql, $db_handle);
// ------ INSERT: Second example -------
$s = "EPrints and العربية";
$sql = "INSERT INTO my_table (post_id, post_subject, post_text) VALUES (2, 'subject 2', '$s')";
mysql_query($sql, $db_handle);
// -------------
mysql_close($db_handle);
é
問題は、次の行をコメントしない限り、最初の挿入 (アクセント付きのラテン テキスト) が失敗することです。
mysql_set_charset('utf8', $db_handle);
しかし、2 番目のクエリ (ラテン語とアラビア語のコンテンツの混合) は、私が呼び出さない限り失敗しますmysql_set_charset('utf8', $db_handle);
私はこれに2日間苦労しています。UTF8 はフランス語のアクセントのような文字をサポートしていると思っていましたが、明らかにサポートしていません!
どうすればこれを修正できますか?