【问题标题】:save special characters in database in core php在核心php的数据库中保存特殊字符
【发布时间】:2015-04-19 05:36:10
【问题描述】:

我想在数据库中保存像以下字符串这样的特殊字符:-

:¦:-•:":•.-:¦:-•太棒了!•-:¦:-•:•-:¦ :-•:*''

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

 $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;
}

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

•:¨¨:•.EXCELLENT.•:â¨Â¨:••:¨¨:•.

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

【问题讨论】:

  • 保存到数据库后如何从数据库返回字符串??
  • 猜测,您的数据库未配置为处理 UTF-8。
  • •:¨¨:•.EXCELLENT.•:¨¨:••:¨¨:•.跨度>
  • 我需要按原样保存字符串。你能帮帮我吗?我不想配置我的数据库来处理 UTF-8
  • 那你是在要求不可能的事。如果您不希望数据库处理 UTF-8,您希望如何处理 UTF-8?

标签: php sql special-characters


【解决方案1】:

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

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

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

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

【讨论】:

  • 我已经提到过:- mysqli_set_charset($linkMysqli, "utf8");
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 我已经尝试过你提到的第一种方法,但它不起作用..我不能使用编码解码方法..我只能在保存文本或在数据库中进行更改,如你所提到的。
  • 我提到了 mysqli_set_charset($linkMysqli, "utf8");现在工作正常
【解决方案3】:

简单的事情就是改变

Collat​​ionutf8 -> utf8_unicode_ci

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

也许这是一个简单的解决方案.....

其他的可以查看你的Mysqli Db类在哪里

'charset'   => 'utf8',

有没有....??

如果您没有找到字符集,请更改为 utf8...

最后检查你的页眉

并添加

<meta charset="utf-8">

也许你会得到一些东西......

【讨论】:

  • 不要使用 utf8_* 排序规则设置。使用 utf8mb_* 处理 Unicode 基本多语言平面之外的字符。
  • 在 utf8_* 排序规则中不起作用的字符示例:? ? ?
猜你喜欢
  • 2016-11-07
  • 2015-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2021-06-21
  • 2017-02-03
相关资源
最近更新 更多