栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否需要“ SET CHARACTER SET utf8”?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否需要“ SET CHARACTER SET utf8”?

利用

SET CHARACTER SET utf8
使用后
SET NAMESutf8
实际上会重置
character_set_connection
,并
collation_connection

@@character_set_database
@@collation_database
分别。

该手册指出

  • SET NAMES x
    相当于

    SET character_set_client = x;

    SET character_set_results = x;
    SET character_set_connection = x;

  • SET CHARACTER SET x
    相当于

    SET character_set_client = x;

    SET character_set_results = x;
    SET collation_connection = @@collation_database;

SET collation_connection = x
同时在内部执行
SET character_set_connection =<<character_set_of_collation_x>>
SET character_set_connection = x
内部还执行
SETcollation_connection = <<default_collation_of_character_set_x

所以基本上你重新

character_set_connection
@@character_set_database
collation_connection
@@collation_database
。手册说明了这些变量的用法:

服务器在收到语句后应将其转换为什么字符集?

为此,服务器使用character_set_connection和collat​​ion_connection系统变量。它将客户端发送的语句从character_set_client转换为character_set_connection(具有诸如_latin1或_utf8之类的介绍符的字符串文字除外)。collat​​ion_connection对于比较文字字符串很重要。对于将字符串与列值进行比较,collat​​ion_connection无关紧要,因为列具有自己的排序规则,排序规则优先级更高。

综上所述,MySQL用于处理查询的编码/代码转换过程及其结果是一个多步骤的过程:

  1. MySQL将传入查询视为编码
    character_set_client
  2. MySQL将语句从
    character_set_client
    转换为
    character_set_connection
  3. 当比较字符串值和列值时,MySQL将字符串值从转码
    character_set_connection
    到给定数据库列的字符集中,并使用列排序规则进行排序和比较。
  4. MySQL建立编码的结果集
    character_set_results
    (其中包括结果数据以及结果元数据,例如列名等)

因此,可能情况是a

SET CHARACTER SET utf8
不足以提供完整的UTF-8支持。考虑
latin1
使用
utf8
-charset
定义的和的默认数据库字符集和列,并执行上述步骤。由于
latin1
无法覆盖UTF-8可以覆盖的所有字符,因此在步骤 3中 可能会丢失字符信息。

  • 3 步:假设您的查询是使用UTF-8编码的,并且包含无法用表示的字符,则
    latin1
    这些字符将在从
    utf8
    latin1
    (默认数据库字符集)的转码时丢失,从而使查询失败。

因此,我认为可以肯定地说这

SET NAMES...
是处理字符集问题的正确方法。即使我可能会补充说,正确设置MySQL服务器变量(所有必需的变量都可以在中静态设置
my.cnf
)可以使您免除每次连接所需的额外查询的性能开销。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号