【问题标题】:Showing � instead of £显示 � 而不是 £
【发布时间】:2011-07-02 00:23:36
【问题描述】:

当从 mysql 数据库中提取数据时,符号�而不是 £

有问题的字段被整理到 utf8_general_ci

我在页面的头部标签上也有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

有什么想法吗?

【问题讨论】:

标签: php mysql encoding character-encoding


【解决方案1】:

在对数据库执行任何查询之前使用mysql_query("SET NAMES 'UTF8'");

【讨论】:

    【解决方案2】:

    正如其他人所说,您应该 SET NAMES 'UTF8' 将其标识为默认字符集。也有可能是错误的字符被插入到数据库中。

    检查源是否确实是 UTF-8 格式,并且是作为 UTF-8 导入的。 (您可以通过上面的查询设置NAMES后重新导入数据。

    如果它们是通过 HTML 表单输入的,请检查包含您的数据输入表单的 HTML 页面是否也包含正确的 meta 元素。

    还要检查您的 HTTP 服务器发送给您的标头(您可以使用 Firebug 扩展来执行此操作)。您可以在 .htaccess 文件中为您的服务器设置默认字符集,该文件包含:

    AddDefaultCharset UTF-8
    

    【讨论】:

      【解决方案3】:

      如果您使用 PHP,设置字符编码的推荐方法是 mysql_set_charset( )。

      我对 MySQL 的初始设置是:

      <?php
      $db = mysql_connect( ... );
      mysql_set_charset( 'utf8', $db );
      
      header('Content-Type: text/html; charset=UTF-8');
      ?>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      

      这样,我永远不会遇到编码问题。

      【讨论】:

        【解决方案4】:

        请阅读http://mysqldump.azundris.com/archives/60-Handling-character-sets.html

        简短版本:在 MySQL 中,字符串字段附加了一个字符集,因此也有连接。连接字符集是客户端字符集的服务器端表示,它是服务器认为客户端正在使用的字符集。

        设置连接字符集的简便方法是SET NAMES utf8,如上面评论中所述。

        如果字段字符集与连接字符集不同,MySQL 将尝试将字段转换为连接字符集。如果两者相等,它将不会尝试这样做。

        调试方法,如文章所示,使用 HEX() 函数查看字段,检查磁盘上的实际数据是什么以及是否正确。

        然后你连接到数据库,使用 SET NAMES utf8 将你的连接设置为正确的客户端字符集,如果你真的像你声称的那样使用 utf8。然后再次输出字符串的HEX(),应该是一样的。如果不是,则连接没有正确的字符集,例如,如果您忘记了 SET NAMES utf8。

        您可以在 MySQL 中配置默认​​连接字符集,使用手册中 SET NAMES 的定义http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html

        SET character_set_client = utf8;
        SET character_set_results = utf8;
        SET character_set_connection = utf8;
        

        如果你把它放到你的 my.cnf 的 mysqld 部分并重新启动服务器,SET NAMES 应该不再是必需的,因为现在默认连接将使用 utf8。

        【讨论】:

          【解决方案5】:

          如果您使用 jquery 和 ajax 获取文本,也会发生这种情况, 尝试用 utf8_encode($string) 回显字符串

          【讨论】:

          • 我在其他方面有一些问题,我已经尝试了所有关于问题的教程,你的问题更好,因为与我的问题相匹配
          猜你喜欢
          • 1970-01-01
          • 2018-11-10
          • 2013-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-18
          • 2010-12-18
          • 2014-04-28
          相关资源
          最近更新 更多