我有一个 PHP 脚本,可以将用户内容保存到 mysql 数据库中(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);
但是除非我打电话,否则第二个查询(拉丁语和阿拉伯语内容的混合)将失败mysql_set_charset('utf8', $db_handle);
我已经为此苦苦挣扎了2天。我认为 UTF8 确实支持像法语口音这样的字符,但显然它不支持!
我怎样才能解决这个问题?