我对正确使用有疑问
$mysqli->set_charset()
。我已经很多年没有在我的网站上使用此功能了。现在我正在重写我的连接脚本,并希望正确应用 $mysqli->set_charset()
。目前该网站仍然基于“latin1”(但我很快就会切换到 UTF-8 (utf8mb4)。)
我的服务器(我自己管理)上的 MySQLi 多年来一直使用 latin1 配置。我想现在添加这个 $mysqli->set_charset("latin1")
不会有什么坏处吗?
如果 MySQLi 默认配置为 utf8mb4,如果没有 $mysqli->set_charset()
函数,我的网站上会出现奇怪的编码字符吗?
我想确认一下我的假设。
P粉6749994202024-01-11 15:16:05
mysqli::set_charset()
设置连接的字符集,即“我通过此连接发送的所有字符串都将使用这个 > 编码,我也希望编码回来”。您需要将其与您在 PHP 端使用的编码相匹配。
也就是说,即使当前设置错误,如果您更改当前值,也可能会导致数据损坏。这是因为在某些情况下,只要设置一致,从您的数据库传输到数据库的过程中被破坏的数据就会以相同的方式被破坏。
在进行任何更改之前,您需要确定当前使用的编码是什么,以及数据库中的数据是否被破坏。从那里您可以制定一条路径来确保所有编码都匹配,您的数据在所有步骤中都正确编码和处理,以及修复现有数据。
一如既往,请参阅主帖:UTF-8 贯穿始终一个>
额外的想法:
latin1
实际上是 ISO-8859-1,但要注意它是邪恶的双胞胎 cp1252,它在保留器 8X 和 9X 字节范围中填充了额外的符号,特别是 €。 参考李>