输入

  • 在尝试存储或在任何地方使用它之前,你应该将每个收到的字符串验证为有效的 UTF-8。PHP 的 mb_check_encoding() 可以解决问题,但你必须始终如一地使用它。由于恶意客户端可以以他们想要的任何编码提交数据,因此无法解决这个问题。

    $string = $_REQUEST['user_comment'];
    if (!mb_check_encoding($string, 'UTF-8')) {
        // the string is not UTF-8, so re-encode it.
        $actualEncoding = mb_detect_encoding($string);
        $string = mb_convert_encoding($string, 'UTF-8', $actualEncoding);
    }
    
  • **如果你使用的是 HTML5,那么你可以忽略最后一点。**你希望浏览器发送给你的所有数据都是 UTF-8。唯一可行的方法是将 accept-charset 属性添加到所有 <form> 标签中,如下所示:

    <form action="somepage.php" accept-charset="UTF-8">