无法在mysql中显示商标符号到html

时间:2015-03-01 06:18:56

标签: php html mysql

我是php / mySQL的首发,我目前面临一个问题,就是在我的html上显示符号,例如®。符号存储在一个表格中,从phpmyadmin查看时可以正常显示,但是当我使用php检索表格内容时,它不显示符号,而是显示带有?的钻石符号。在里面。我已将html页面设置为utf-8,将我的表格设置为utf8_general_ci,但没有运气。

当我直接输入html甚至存储在php变量中时,符号能够正确显示。

我用来获取内容的查询是

while ($row = mysql_fetch_array($result)){

echo ($row["symbol"]);

}

非常感谢提前

3 个答案:

答案 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