【问题标题】:PHP - Encoding issue with filtered inputPHP - 过滤输入的编码问题
【发布时间】:2018-05-06 08:06:42
【问题描述】:

我正在使用 PHP filter_input 函数来清理我网站上的 POST 参数。

代码:

$text = trim(filter_input(INPUT_POST, 'text', FILTER_SANITIZE_STRING,
                 array('flags' => FILTER_FLAG_STRIP_LOW | FILTER_FLAG_ENCODE_HIGH)));

现在,如果我插入像“ù”这样的字符,这就是编码结果:

ù (à ¹)

我的数据库表是用 utf8_general_ci 编码的。 现在,我尝试了该功能

utf8_decode($data)

但它不起作用。 请帮助如何恢复使用 FILTER_FLAG_ENCODE_HIGH 参数编码的字符?

编辑:这是我的连接类

 class Connection{

protected $db =null;


public function open()
{
    try {
    $dsn      = "mysql:dbname="x"; host=127.0.0.1;charset=utf8";
    $user     = "user";
    $password = "password";

    $options  = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES => false,

    );



        $this->db = new PDO($dsn, $user, $password, $options);

        return $this->db;
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
}

public function close()
{
    $this->db = null;
    return true;
}
}

【问题讨论】:

  • 与mysql建立连接时你设置的是什么字符编码?
  • 好的,我会编辑主帖

标签: php mysql utf-8 filter character-encoding


【解决方案1】:

ùù 的“Mojibake”。

请参阅this 了解如何处理。

不要使用任何函数,例如utf8_decode;他们只会让问题变得更糟。

【讨论】:

    猜你喜欢
    • 2019-06-17
    • 2011-01-21
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多