【问题标题】:MYSQL Characters like ( ', ", &) etc. appear differentMYSQL 字符('、"、&)等看起来不同
【发布时间】:2011-09-12 01:09:32
【问题描述】:

我保留了一个由我的用户自动填充的数据库。但是当有像My Father's Will 这样的输入时。它将像这样进入数据库:My Father's Will

这不是我想要的。有人可以告诉我如何启用这些特殊字符,或者可能是一种变通方法,不向我的用户显示这些丑陋的字符。

我使用 PHP、MySQL 服务器和 PHPMyAdmin 作为数据库管理工具。

【问题讨论】:

  • 您需要正确格式化您的帖子。这没有任何意义。

标签: php mysql database phpmyadmin


【解决方案1】:

看起来' 像 HTML 字符一样被转义。我猜你做错了转义,比如使用htmlentities 而不是mysql_real_escape_string。如果此信息没有帮助,请发布您的代码。它会在没有的情况下猜测。

【讨论】:

【解决方案2】:

当您从数据库中提取值时,请使用 htmlspecialchars_decode()。这会将所有 html 特殊字符转换回常规文本。

$str = 'My Father's Will';
echo htmlspecialchars_decode($str);

将输出:

My Father's Will

【讨论】:

    【解决方案3】:

    我真的不明白你在问什么,因为“我父亲的意志”和“我父亲的意志”完全一样?

    但这似乎是与 PHP 中的字符串转义或 MySQL 数据库中的编码冲突有关的问题,请尝试查看两者并随意指定您的问题。

    【讨论】:

    • 是的,编辑了我的帖子...这是因为此页面将特殊字符呈现为 '
    • 如上所述,这看起来像是使用 PHP 插入数据时的编码或转义问题。在插入数据库之前,您是否在数据上尝试过 html_entity_decode() 之类的函数? link
    【解决方案4】:

    听起来您可能正在转义(例如 php 的 htmlentities())您的输入在进入数据库的过程中。正确的做法是仅在输出回屏幕时将其转义。

    【讨论】:

      【解决方案5】:

      您很可能在代码中的某处调用了htmlspecialchars(..., ENT_QUOTES),这会将'" 编码为字符实体。如果它们以编码形式存在于数据库中,并且最终用户看到字符实体,那么您正在执行双重编码并且您的脚本输出类似于 &x27;

      【讨论】:

        猜你喜欢
        • 2017-07-31
        • 2019-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多