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

时间:2015-02-18 09:20:25

标签: php sql special-characters

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

  

:|: - •的:•.-:|: - • 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;
}

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

  

一个€¢:AA:•.EXCELLENT.•:AA:••:AA:•

任何人都可以指导我如何保存与数据库相同的字符串

3 个答案:

答案 0 :(得分:2)

好像是编码问题。您接收的数据的编码应与存储它的数据库的编码相同。

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

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

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

答案 1 :(得分:1)

请通过做这两件简单的事情来检查,我希望它可以帮助你: -

  1. 要保存此数据(特殊字符)的列的"collation",将其设为"utf-8-bin"

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

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

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

答案 2 :(得分:0)

简单的事情就是改变

db中的

整理 utf8 - >的 utf8_unicode_ci

如果你不使用字段输入作为文字而不是将其更改为文字...

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

其他事情你可以查看你的Mysqli Db课程

'charset'   => 'utf8',

是否有...... ??

如果您没有找到字符集,请转到utf8 ...

最后检查您的页面标题

并添加

<meta charset="utf-8">

多数民众赞成你可能会得到一些东西......