在核心数据库中保存特殊字符 php

save special characters in database in core php

我想在数据库中保存特殊字符,如以下字符串:-

:¦:-•:":•.-:¦:-•EXCELLENT!•-:¦:-•:•-:¦:-•:*''

下面是我正在使用的代码。

 $Fields ['CommentText']=$CommentText;
$Fields = prepareMySQLi($FieldsNotifications,$linkMysqli);
$insert = mysqli_query($linkMysqli,"INSERT INTO `feeds` SET $Fields");

    function prepareMySQLi($MyArray,$linkMysqli) {
        foreach($MyArray as $col => $val) {
                if($val=='Invalid Request') $val='';
                if ($val!='' && !is_array($val)) {
                        $col = mysqli_real_escape_string($linkMysqli,$col);
                        $val = mysqli_real_escape_string($linkMysqli,$val);
                        if(isset($fields)) {
                                $fields .= ", `$col` = '$val' ";
                        } else {
                                $fields = " `$col` = '$val' ";
                        }
                }
        }
return $fields;
}

但是上面的代码保存结果如下:-

•:¡

谁能指导我如何保存与数据库中相同的字符串?

这似乎是编码问题。您接收到的数据的编码应与存储数据的数据库的编码相同。

一般做法是对两者都使用 "utf-8" 编码。

因此请检查数据库以何种编码存储数据,并尝试将接收到的数据转换为该格式,反之亦然。

您可以使用 utf8_encode 函数将数据编码为 "utf-8"。

请通过做这两个简单的事情来检查,希望对您有所帮助:-

  1. 您要在其中保存此数据(特殊字符)的列的 "collation",使其成为 "utf-8-bin".

  2. 将列的类型更改为 "blob""text""long text".

  3. 尝试你的代码:- mysqli_set_charset($linkMysqli, "utf8");

  4. encode and decode process。在保存文本之前对其进行编码,如果您想在某处显示它,请先对其进行解码,然后再显示。

简单的事情就是改变

数据库中的 utf8 -> utf8_unicode_ci

如果您不使用字段 Type 作为文本而不是将其更改为文本...

可能这是简单的解决方案.....

其他可能你可以检查你的Mysqli Db class在哪里

'charset'   => 'utf8',

有没有....??

如果找不到字符集,请更改为 utf8...

最后检查你的页眉

并添加

<meta charset="utf-8">

那就是你可能会得到一些东西...