我有一个joomla数据库,其中mySQL连接排序规则是utf8_general_ci。 我在数据库中有一些额外的数据表(与joomla安装无关),我想用PHP脚本中的数据填充。
稍后编辑:请查看以下
当我尝试插入特殊字符(语言和区域特定字符)时,我在数据库中得到乱码,例如îăéșÈ> 而不是îăîşţ。
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";
}
}
?>
是否应该如何进行此插入,以使其与任何区域相关的角色兼容?
稍后编辑: 我运行了“显示变量,如'%collation%'” collation_connection - utf8_general_ci collation_database - latin1_swedish_ci collation_server - latin1_swedish_ci
这可能是问题吗?
答案 0 :(得分:0)
设置连接后,我必须以特定方式更改连接字符集。
$con = mysqli_connect("mydb12.surf-town.net","bosteen_licadm","Ugymate92","bosteen_p2p");
$con->set_charset("utf8");
在此之后,插入工作!