我正在使用POST函数对我的站点上的POST参数进行消毒。
代码:
$text = trim(filter_input(INPUT_POST, 'text', FILTER_SANITIZE_STRING,
array('flags' => FILTER_FLAG_STRIP_LOW | FILTER_FLAG_ENCODE_HIGH)));现在,如果我插入像"ù“这样的字符,这就是编码的结果:
(1,1)
我的数据库表是用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;
}
}发布于 2018-05-07 00:29:42
ù是ù的"Mojibake“。
有关如何处理此问题,请参见https://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored。
不要使用任何函数,例如utf8_decode;它们只会使问题变得更糟。
https://stackoverflow.com/questions/50197544
复制相似问题