【问题标题】:Allowing certain ( Danish ) characters with htmlentities允许带有 htmlentities 的某些(丹麦语)字符
【发布时间】:2016-08-03 15:08:11
【问题描述】:

我有一个需要为用户显示记录的数据库。我正在使用 htmlentities 来确保没有像这样向用户回显恶意代码:

    function h($string) {
      return htmlentities($string, ENT_SUBSTITUTE, "UTF-8");
    }

然后在我向用户输出任何条目时调用该函数。问题是我需要能够显示丹麦字符 ÆØÅ 并且这些字符在正方形中显示为问号。该网站也有 utf-8 编码。

我已经尝试了 php.net 上 htmlentities 下列出的所有内容,并尝试找到一些解决方案来创建异常或其他解决方法,但我找不到任何解决方案。

有人知道这个问题的解决方法吗?

【问题讨论】:

  • 我在你的问题中运行了你的代码,它对我有用。
  • 尝试进行初始查询SET NAMES utf8。如果你使用 mysqli,你可以这样做:mysqli_set_charset($link, "utf8"); 或者如果你使用 PDO,你可以在建立连接时设置编码"mysql:host=$host;dbname=$db;charset=utf8"。看到这个问题:stackoverflow.com/questions/4361459/php-pdo-charset-set-names
  • 如果答案不在此范围内,我会很惊讶:stackoverflow.com/questions/279170/…
  • @Ultimater 谢谢!!如此容易,却又如此难找!确实在连接中定义字符集解决了它!

标签: php security output


【解决方案1】:

第二条评论回答了它。在连接中添加字符集解决了这个问题。所以对于我的 PDO 连接,我不得不这样说:

    $dbh = new PDO('mysql:dbname=myName;charset=utf8;host=myHost', 'myUser', 'myPassw0rd');

现在一切都正常显示了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2023-03-23
    • 2010-12-09
    相关资源
    最近更新 更多