在阅读O'Reilly的“高性能MySQL”时,我偶然发现了以下内容
另一个常见的垃圾查询是SET NAMES UTF8,无论如何这是错误的处理方式(它不会更改客户端库的字符集;它仅影响服务器)。
我有点困惑,因为我曾经将“ SET NAMES utf8”放在每个脚本的顶部,以使数据库知道我的查询是utf8编码的。
任何人都可以评论以上引用,或者,更正式地说,是什么建议或最佳实践,以确保我的数据库工作流可识别unicode。
如果相关,我的目标语言是php和python。
"mysql_set_charset()将是一个选择-但仅限于ext/mysql。为此ext/mysqli,mysqli_set_charset并且您需要指定连接参数。PDO::mysql
使用此函数会导致MySQL API调用,因此应认为它比发出查询要快得多。
在性能方面,确保脚本和MySQL服务器之间基于UTF-8通讯的最快方法是正确设置MySQL服务器。由于SET NAMES x是等同于
SET character_set_client = x; SET character_set_results = x; SET character_set_connection = x; 而SET character_set_connection = x内部也可以执行,SET collation_connection = <<default_collation_of_character_set_x>>您也可以在中静态设置这些服务器变量my.ini/cnf。
请注意在同一MySQL服务器实例上运行的其他应用程序可能需要的问题,并且需要其他一些字符集。" 来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。