php - UTF8 编码的字符串在 MySQL 中无法正确显示

标签 php mysql html character-encoding

所以我编写了一个爬虫程序来从字符集utf8的网站上抓取信息和数据。但是当我尝试将内容存储到 MySQL 中时,一些特殊字符(例如西类牙语字母)在 MySQL 中无法正确显示。

这是我所做的:

  1. header("Content-Type: text/html; charset=utf-8") 放入 PHP
  2. 将MySQL中的所有字符集设置为utf8-unicode-ci
  3. 在连接时有 $conn->query("SET NAMES 'utf8'")
  4. 仔细检查我解析的 html 是否采用 utf-8 编码

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

最佳答案

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

尝试放置:

mb_internal_encoding("UTF-8");

作为 php coce 的第一行,然后检查是否必须在各自的 mb 版本中转换某些函数。 看看multibyte string reference

作为最后一次机会,您可以玩 iconv function就在将字符串插入 mysql 之前。
例如:

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

应该可以解决问题

关于php - UTF8 编码的字符串在 MySQL 中无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12607995/

相关文章:

html - 如何使用 bootstrap 进行 about me 布局

javascript - 二维可滚动表格

php - php 中是否可以将函数调用作为默认参数?

php - 有没有一种可靠的方法可以知道请求是否在 PHP 的 Ajax 上下文中?

php - MySQL Decimal 作为 Int 返回

MySQL删除并加入

mysql - 为什么在 MySQL 中引用用户名和主机名?

PHP mySQL 查询和 PHP 变量

php - 从 2 个表获取数据,其中一个表依赖于另一个表

javascript - 使用 JavaScript 启动转换