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

时间:2015-03-16 04:30:10

标签: php character-encoding special-characters

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

数据无法编码为htmlentities,因为否则数据将作为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 个答案:

答案 0 :(得分:3)

我有类似的问题

但可能因多种原因造成。

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;
    }

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

希望任何这些帮助

谢谢