Php UTF8编码的字符串在MySQL中未正确显示

Php UTF8编码的字符串在MySQL中未正确显示,php,mysql,html,character-encoding,Php,Mysql,Html,Character Encoding,因此,我编写了一个爬虫程序,用字符集utf8从网站上抓取信息和数据。但当我试图将内容存储到MySQL中时,一些特殊字符(如西班牙语字母)在MySQL中没有正确显示 以下是我所做的: 在PHP中放置标题(“内容类型:text/html;charset=utf-8”) 将MySQL中的所有字符集设置为utf8 unicode ci 连接时进行$conn->query(“设置名称'utf8'”)此操作 仔细检查我解析的html是否以utf-8编码 那么这里有哪些潜在的问题呢 首先检查数据库中的数据是否

因此,我编写了一个爬虫程序,用字符集utf8从网站上抓取信息和数据。但当我试图将内容存储到MySQL中时,一些特殊字符(如西班牙语字母)在MySQL中没有正确显示

以下是我所做的:

  • 在PHP中放置
    标题(“内容类型:text/html;charset=utf-8”)
  • 将MySQL中的所有字符集设置为
    utf8 unicode ci
  • 连接时进行
    $conn->query(“设置名称'utf8'”)
    此操作
  • 仔细检查我解析的html是否以utf-8编码

  • 那么这里有哪些潜在的问题呢

    首先检查数据库中的数据是否存储错误,在这种情况下,问题在于爬虫。否则问题就出在你的演讲上


    为了测试这一点,我建议您使用专用的mysql客户端(如命令行客户端)来检查数据。

    也许您使用不应该管理多字节字符的函数来编写爬虫程序。
    例如strlen而不是mb_strlen

    试着放:

    mb_internal_encoding("UTF-8");
    
    作为php coce的第一行,然后检查是否必须在各自的mb版本中转换某些函数。 看看

    这是您在将字符串插入mysql之前最后一次玩的机会。
    例如:

    $utf8_string = iconv(iconv_get_encoding($string), "UTF-8", $string);
    

    应该这样做

    我记得在处理UTF8问题时,我一直在竭尽全力,直到我开始将此添加到我的标题:

    setlocale(LC_ALL, 'en_US.UTF-8');
    

    嗨,Troleskn,我的爬虫程序使用cURL提取数据并用PHPDOM解析它。数据存储也很简单。@DanielZuo Troleskn给你的建议很好。你的解决方案有多简单并不重要,重要的是要看数据是否正确存储,以确定问题可能出现在哪里。@DanielZuo很高兴给网络一些反馈:)