保存特殊字符

ubbxdtey  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(209)

我有一段php代码:

$bd_to = mysqli_connect($to_mysql_hostname, $to_mysql_user, $to_mysql_password, $to_mysql_db);
if (!$bd_to) {
    die('database to | Connect Error: ' . mysqli_connect_errno());
}

$data = ["Gener","Febrer",'Març',"Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"];
for ($counter = 0; $counter < count($data) ; $counter++){
    $insert = "INSERT INTO estancia_mes(mes, numero) VALUES ('" . mysqli_real_escape_string($bd_to, $data[$counter]) . "', " . ($counter+1) . ")";
    $result = mysqli_query($bd_to, $insert);

    if (!$result){
        echo "error: " . mysqli_error($bd_to) . "\n";
        echo "\n" . $insert . "\n";
        return;
    }
}
echo "inserted rows to Estancia_mes table\n";

问题出在绳子上 "Març" 因为当它插入时,值被上传为 Març ,所以有一个问题 ç 性格。
数据库有一个utf8\u西班牙语\u ci排序规则。
如果我手动编辑值并更改 çç 它可以工作(使用桌面程序->heidisql)。可能是php没有发送 ç 正在发送 ç ?
此php脚本由windows cmd执行

s71maibg

s71maibg1#

如果您有权访问数据库,则可以更改字符集和排序规则。
对于角色集,请尝试 utf8mb4 为了整理 utf8mb4_spanish_ci 这种方法比动态更改编码更容易(我以前都用过。)
多字节字符集将处理任何特殊字符,包括表情符号。
参考文献:https://dev.mysql.com/doc/refman/5.7/en/charset-unicode-sets.html

wz1wpwve

wz1wpwve2#

添加 $bd_to->set_charset("utf8"); 连接后。那就是

$bd_to = mysqli_connect($to_mysql_hostname, $to_mysql_user, $to_mysql_password, $to_mysql_db);
$bd_to->set_charset("utf8");
inkz8wg9

inkz8wg93#

在评论中测试了你的解决方案后,看到问题没有得到解决,我想问题不应该是mysql数据库,而是php发送给它的字符。
因此,我寻找了配置php查询的字符集的方法,并找到了这个函数

bool mysqli_set_charset ( mysqli $link , string $charset )

设置从数据库服务器和向数据库服务器发送数据时要使用的默认字符集。
因此,在打开与mysql的连接后,我添加了:

mysqli_set_charset ( $bd_to , "utf8" );

有关函数的详细信息(php.net)

相关问题