所有特殊字符在 PHP/HTML 中都是问号


All special characters are question marks in PHP/HTML

Php 默认字符集是 UTF-8。PHP 和 HTML 中的所有特殊字符在浏览器中都输出为问号,如"?"。所有带有特殊字符的数据都以 UTF-8 格式存储在数据库字段中。但是当PHP读取数据库并输出到浏览器时,所有特殊字符(如版权和商标符号)都是?

数据不能编码为 html 实体,否则数据将在浏览器中作为 html 代码输出。数据库中的字段具有 html 标记。这就像一个所见即所得的田野。

另一个类似的问题并没有真正解决问题。我的问题是 php 正在读取以 utf-8 编码的数据库字段,包括 html 标记、文本和特殊字符。然后将数据保存在另一个 utf-8 编码的数据库字段中。但是中间有些东西不对劲。该过程完成后,新 mysql 列中的特殊字符为 ?。因此浏览器正在显示?对于所有特殊字符。

$conn = new mysqli($host, $username, $password, $dbName);
mysql_set_charset('utf-8',$conn);

$categoryDescription = utf8_encode(utf8_decode($var['manufacturer_overview']));

我有类似的问题

但可能是由于多种原因造成的。

1.检查标题是否有

<meta charset="utf-8" />

2.仅在支持特殊字符集的编辑器中打开包含特殊字符集的页面

3.这是我的情况

我使用 php 函数将数据保存在数据库中 utf8_encode() 但也保存在数据库中 在我的执行函数中,它已经存在

mysql_set_charset('utf8',$dbSelect);

我的函数看起来像这样

public function execute($sql,$useDb = 1)
    {
        if($useDb == static::LOCAL)
        {
            $dbSelect = $this->conexion;
        }elseif ($useDb == static::REMOTE) 
        {
            $dbSelect = $this->paisConexion;
        }
        mysql_set_charset('utf8',$dbSelect);
        $result = mysql_query($sql,$dbSelect) or die("ERROR: Ejecuci&oacute;n de consulta: $sql<br>'n");
        return $result;
    }

所以它被编码了两次,我删除了一个,现在它工作正常。

希望这些中的任何一个都有帮助

谢谢