php - MySQL 将 PHP 中的 UTF-8 条目正确保存在 VARCHAR 中,但不能保存在文本 blob 中

标签 php mysql utf-8

我目前在我的网站的文本段落中有以下文本片段

let’s get to it

撇号字符是 UTF-8 字符集的一部分,它以以下形式正确保存在指定为 VARCHAR 列的表列中

 let’s get to it

我的客户正确解析了它。如果我将相同的文本放入 MySQL 的 TEXT 列中,它的存储方式如下:

let’s get to it. 

两者是否有任何不同的原因,如果是,我该如何更改?

最佳答案

let's 是 Mojibake。 Latin1 正在悄然崛起。

“文本 blob”——它是 TEXT 还是 BLOB?它们是不同的数据类型。

let€™s 来自 htmlentities() 或类似的东西。可以在 VARCHARTEXTBLOB 中存储和检索,无论 CHARACTER SET 是什么。 MySQL 将不会转换为该类型。

Mojibake可能来自

  • 客户端中的字节已正确编码为 utf8(良好)。
  • 您可能默认使用SET NAMES latin1(或set_charset('latin1')或...)进行连接。 (应该是 utf8。)
  • 表中的列可能是也可能不是CHARACTER SET utf8,但它应该是这样。

关于php - MySQL 将 PHP 中的 UTF-8 条目正确保存在 VARCHAR 中,但不能保存在文本 blob 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664523/

相关文章:

php - 为 Laravel 的工厂在全局设置 Faker 的种子

python - 读取 csv 时 csv.DictReader 使用哪种编码?

PHP - UTF8 解码问题

utf-8 - 检测任意字符串的字符集/脚本

mysql - Node-Mysql 事务回滚不起作用

javascript - 欢笑连接: javascript inser xml in mysql

javascript - 使 $.getJSON 立即可用 与 for 的区别

php - 向复杂的 SQL select 语句添加字段

php - .\libraries\classes\Dbi\DbiMysqli.php#213 中的警告

php 并用 html 标签回显字符串。字符串空间截断字符串并且也不能作为替换