我在mysql数据库中有一个字段"scroll ",排序为"utf8_unicode_ci"。我试图保存一个阿拉伯语文本到这个领域。
当我直接插入mysql时,它工作了。
使用下面的代码,我试图编辑字段。当我回显它时,它显示正确。但当它被保存使用更新其保存像"???????: 89 ?????? ?? ?阿姆里 ?????????? ?? ????????? ?? ?
echo "<meta http-equiv=Content-Type content=text/html; charset=UTF-8>";
require 'config.php';
mysql_query("SET NAMES 'utf8'");
mysql_query('SET CHARACTER SET utf8');
$scroller=htmlentities($_POST['scroller'],ENT_QUOTES,"UTF-8");
mb_internal_encoding("UTF-8");
echo $scroller;
$sql="UPDATE arab_scroller SET scroller='$scroller' WHERE page='$id1' ";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
header( 'Location:index.php' );
请帮我一下
我刚刚用土耳其语测试了同样的东西。如果您的表的默认排序规则不是UTF8,您可能会遇到这些问题。
请先试一下:
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
然后尝试再次运行您的代码。
同样,用mysql_set_charset
代替SET NAMES
更好:http://php.net/manual/en/function.mysql-set-charset.php
您只需更改表排序utf8_general_ci默认为拉丁文;
或
你运行这个查询:
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;