我目前在我的网站的文本段落中有以下文本片段
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
?它们是不同的数据类型。
lets
来自 htmlentities()
或类似的东西。可以在 VARCHAR
、TEXT
或 BLOB
中存储和检索,无论 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/