从php中插入数据库中的特殊字符

时间:2016-05-12 13:26:22

标签: php mysql database joomla character-encoding

我有一个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";
    }
}

?>

是否应该如何进行此插入,以使其与任何区域相关的角色兼容?

稍后编辑: 我运行了“显示变量,如'%collat​​ion%'” collat​​ion_connection - utf8_general_ci collat​​ion_database - latin1_swedish_ci collat​​ion_server - latin1_swedish_ci

这可能是问题吗?

1 个答案:

答案 0 :(得分:0)

设置连接后,我必须以特定方式更改连接字符集。

$con = mysqli_connect("mydb12.surf-town.net","bosteen_licadm","Ugymate92","bosteen_p2p");

$con->set_charset("utf8");

在此之后,插入工作!