gpt4 book ai didi

PHP 的 MYSQLI get_charset 返回错误的字符集

转载 作者:行者123 更新时间:2023-11-29 19:04:10 27 4
gpt4 key购买 nike

我愿意:

$conn->real_connect($host,$user,$pass,$someUTF8Schema);

然后我打印我得到的内容:

$conn->get_charset()

它是:

字符集=“latin1”排序规则 =“latin1_swedish_ci”

即使我的架构和数据库中的所有表都是 utf8。

为了证明这一点,我这样做:

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = $someUTF8Schema;
->
# DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
'utf8', 'utf8_unicode_ci'

为什么 PHP MySQLi 返回错误的排序规则?谢谢!

最佳答案

有很多事情需要协调。

  1. 您在 PHP 中操作的字符是什么编码?
  2. 您是否告诉 MySQL 通过连接调用或 set_charsetSET NAMES 进行编码?
  3. 您可以通过 `get_charset() 获取它。
  4. 但是数据库/表/列不必与此相同 --
  5. 创建数据库时,您可以为该数据库中的表建立默认字符集。
  6. 创建表时,您可以通过显式指定该表中的字符集来覆盖默认值。
  7. 指定列时,您可以通过显式指定该列的字符集来覆盖默认值。
  8. 当插入的 INSERTing 字节时,将根据步骤 2 进行解释,然后转换为列的字符集 (#7)。
  9. 同样,当选择时,如有必要,字符会重新转换(#7->#2)。

注意,我没有提到COLLATION,只提到CHARACTER SET。它们是不同的动物。 COLLATION 指的是如何比较给定CHARACTER SET 中的字符。

请参阅 Trouble with utf8 characters; what I see is not what I stored 的最佳实践部分.

关于PHP 的 MYSQLI get_charset 返回错误的字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43640009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com