【问题标题】:cannot display trademark symbol in mysql to html无法在 mysql 中将商标符号显示为 html
【发布时间】:2015-03-01 06:18:56
【问题描述】:

标签: php html mysql


【解决方案1】:

在处理不同的字符集时,这些类型的编码问题会变得复杂。在这些情况下,仅更改排序规则并不能解决问题,您需要更改 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

【讨论】:

  • 感谢 EternalHour,我已按照您的建议将 table 的字符转换为 utf8,仍然显示带有 ?里面
  • @HSL808 - 我已经添加了其他东西来尝试。
  • $mysqli->set_charset("utf8");是什么最终为我工作。我的表格也被转换了,字段的字符集以及我尝试了一切。
【解决方案2】:

可以使用html字符实体代替直接符号

不要使用

®

试试看

®

【讨论】:

    【解决方案3】:

    您可以通过 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

    【讨论】:

    • 这与为什么当符号在数据库中正常时检索 MySQL 查询时字符集无法输出符号无关。
    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 2012-01-31
    • 2013-10-27
    • 2018-06-04
    • 2017-04-23
    • 2013-03-22
    • 2015-06-14
    • 1970-01-01
    相关资源
    最近更新 更多