我试图了解何时应该为客户端设置/强制默认字符集。
该文件指出:
您可以强制客户端程序使用特定字符集,如下所示:
[客户端] default-character-set=charset_name
这通常是不必要的。但是,当 character_set_system 与 character_set_server 或 character_set_client 不同时,并且您手动输入字符(作为数据库对象标识符、列值或两者兼而有之)时,这些字符可能在客户端的输出中显示不正确,或者输出本身的格式可能不正确。在这种情况下,使用 --default-character-set=system_character_set 启动 mysql 客户端(即设置客户端字符集以匹配系统字符集)应该可以解决问题。
让我们假设 charater_set_system 和 character_set_server 是不同的。
我的第一个问题:
我想当我导入由 mysqldump 生成的导出文件时,变量 default-character-set 没有效果,因为集合名称总是在导出文件的开头发出。我是对的还是可能存在极端情况?
第二个问题:
手动运行 sql 脚本呢?文档说明某些字符可能显示不正确。我如何确保正确导入数据(运行应用程序测试的一部分,即通过反复试验)?
您可以选择即时设置字符集/排序规则:
尽管可能需要反复试验,但不要对 /etc/my.cnf 中的这些变量无所适从。您最好在任何试错测试期间动态设置它们。
为了确保任何极端情况,请查看任何 mysqldump 的初始变量,并查看字符集或排序规则是否在开头设置并在底部重置。
事实上,这是一个 mysqldump 的示例:
查看变量
您也许可以设置这些选项
[mysqldump]
group 部分下