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']));