查看 MySQL 服务器变量,服务器和数据库排序规则设置为 latin1_swedish_ci,但 collaction_connection 为 utf8_general_ci。此外,排序规则/字符集设置在多个级别:服务器、数据库、表和列。您还需要考虑 PHP MySQL 连接的字符集。
我的问题有四点:
为什么有不同级别的 MySQL 排序规则/字符集?是这样你就可以混合你的字符集来满足你的需要吗?如果我错了,请纠正我,但 utf8 似乎是一般用途的最佳字符集,那么为什么我使用的大多数 LAMP 设置都默认使用 latin1?
您是否应该始终确保您的 PHP 连接与您正在处理的数据库的字符集相匹配?
如果您可以拥有使用不同字符集的不同表,您是否只使用 SET NAMES 或 mysql(i)_set_charset 来切换?
如果您有一个包含多个字符集的表,您如何管理它,因为连接一次只能使用一个字符集?
非常感谢。
编辑:
关于评论:
“您可以使用任一种,前者仅用于设置结果字符集,后者用于设置 PHP 内部编码以用于 mysqli_real_escape_string 和结果编码。”
我以为你不打算一起使用 real_escape_string 和 SET NAMES 。见:http : //www.php.net/manual/en/mysqlinfo.concepts.charset.php