我有一个joomla数据库,其中的mySQL连接排序规则是UTF8_General_CI。我在数据库中有一些额外的数据表(与joomla安装无关),我想用PHP脚本中的数据填充这些数据表。
后期编辑:勾选下方
当我尝试插入特殊字符(特定于语言和地区的字符)时,我在数据库中得到的是jibberish(像:®?®?™?),而不是“?”。
joomla数据库中所有列的排序规则为:utf8mb4_unicode_ci(如果这有任何区别)
奇怪的是,如果我在电子邮件/移动应用程序(基于浏览器)中显示数据库的内容,它会正确地显示数据。但是我可以看出,从PHP中插入valus是不对的,因为如果我从phpmyadmin面板手动插入它,该值将正确地显示在表中。
<?php header('Content-type: text/html; charset=UTF-8'); //header is specified here
$value_to_insert = addslashes($_REQUEST['value']); //get the value from the parameter
inserttask($value_to_insert); //insert the value into the datatable
function inserttask($value_to_insert)
{
$con = mysqli_connect("host",username,password,database); //set up my mysqli connection
//mysql_set_charset('utf8'); //this didn't help
if (!$con)
{
die();
}
$sql = "INSERT INTO `table` (`value`) VALUES ('".mysqli_real_escape_string($con, $value_to_insert)."')";
if($result=mysqli_query($con,$sql))
{
print "OK";
}
else
{
print "ERROR";
}
}
?>
有什么想法,这个插入应该怎么做,使它兼容任何地区依赖的字符?
稍后编辑:我运行了“show variables like'%collation%'”collation_connection-utf8_general_ci collation_database-latin1_swedish_ci collation_server-latin1_swedish_ci
这会是问题所在吗?
在设置连接之后,我必须以特定的方式更改连接字符集。
$con = mysqli_connect("mydb12.surf-town.net","bosteen_licadm","Ugymate92","bosteen_p2p");
$con->set_charset("utf8");
在此之后,插入工作!