我是php / mySQL的首发,我目前面临一个问题,就是在我的html上显示符号,例如®。符号存储在一个表格中,从phpmyadmin查看时可以正常显示,但是当我使用php检索表格内容时,它不显示符号,而是显示带有?的钻石符号。在里面。我已将html页面设置为utf-8,将我的表格设置为utf8_general_ci,但没有运气。
当我直接输入html甚至存储在php变量中时,符号能够正确显示。
我用来获取内容的查询是
while ($row = mysql_fetch_array($result)){
echo ($row["symbol"]);
}
非常感谢提前
答案 0 :(得分:1)
您可以使用html字符实体代替直接符号
不要使用
®
试试吧
®
答案 1 :(得分:0)
您可以通过 HTMLEntity
将商标,版权或其他符号转换为数据库 htmlentities()
函数将字符转换为HTML实体。
参考:http://www.php.net/manual/en/function.htmlentities.php
参考:http://www.php.net/manual/en/function.htmlspecialchars.php
®注册商标®
™商标代码:™
其他有用的信息和符号可在此处找到:http://www.w3schools.com/html/html_entities.asp
答案 2 :(得分:0)
在处理不同的字符集时,这些类型的编码问题会变得复杂。在这些情况下,只需更改排序规则就无法解决问题,您需要更改CHARSET
。只有在更改CHARSET
之后,您才应该担心整理(它们不是一回事)。
为了安全起见,请在更改之前导出数据库/表。
我会先将表格转换为utf8
,因为它现在已成为标准。
ALTER TABLE tbl_name
CONVERT TO CHARACTER SET utf8
通过执行此操作,它还会将表格和列的CHARSET
更改为utf8,但您可能仍需要手动将列的排序规则更改为utf8_general_ci
(看起来您已经做完了。)
如果您想更改默认字符集(对于新列)...
ALTER TABLE tbl_name
DEFAULT CHARACTER SET utf8
编辑:
如果更改数据库中的CHARSET
不起作用,您可以尝试在PHP端设置它。只需在连接后添加即可。
mysql
mysql_set_charset("utf8");
mysqli
$mysqli->set_charset("utf8");
PDO
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8'"
以下是一些有用的文档:
10.1 Character Set Support
10.1.12 Column Character Set Conversion
10.1.13.1 Unicode Character Sets