mysql 下列字符集作用

发布网友 发布时间:2022-04-24 10:04

我来回答

2个回答

懂视网 时间:2022-05-01 04:19



参考mysql中文手册:

10.3.6. 连接字符集和校对
一些字符集和校对规则系统变量与客户端和服务器的交互有关。在前面的章节中已经提到过部分内容:
·         服务器字符集和校对规则可以用作character_set_server和collation_server变量的值。

·         默认数据库的字符集和校对规则可以用作character_set_database和collation_database变量的值。

在客户端和服务器的连接处理中也涉及了字符集和校对规则变量。每一个客户端有一个连接相关的字符集和校对规则变量。

考虑什么是一个“连接”:它是连接服务器时所作的事情。客户端发送SQL语句,例如查询,通过连接发送到服务器。服务器通过连接发送响应给客户端,例如结果集。对于客户端连接,这样会导致一些关于连接的字符集和 校对规则的问题,这些问题均能够通过系统变量来解决:

·         当查询离开客户端后,在查询中使用哪种字符集?

服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。

·         服务器接收到查询后应该转换为哪种字符集?

转换时,服务器使用character_set_connection和collation_connection系统变量。它将客户端发送的查询从character_set_client系统变量转换到character_set_connection(除非字符串文字具有象_latin1或_utf8的引介词)。collation_connection对比较文字字符串是重要的。对于列值的字符串比较,它不重要,因为列具有更高的 校对规则优先级。

·         服务器发送结果集或返回错误信息到客户端之前应该转换为哪种字符集?

 



character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。

这个是mysql的字符集机制,还是有一定作用的

这样做,允许不同的客户端具有不同的字符集。典型的例子就是,我有一个utf-8的站点,这个站点就是一个charset client为utf-8的客户端。与此同时,我有可能需要在一个gbk的终端上读写数据库,这又是一个客户端,不过它的字符集是gbk。

 

不同的连接,它们都有各自的character_set_client,character_set_connection,互不相关。你上面所说的那种需求,我感觉即使没有character_set_connection,只需要character_set_client一样可以实现。

mysql中变量character_set_connection的具体作用

标签:

热心网友 时间:2022-05-01 01:27

character_set_client 来自客户端的语句的字符集,采用这个字符集对客户端语句进行解析
character_set_connection 用于没有字符集导入符的文字和数字-字符串转换
character_set_database 默认数据库使用的字符集。当默认数据库更改时,服务器则设置该变量。如果没有默认数据库,变量的值同character_set_server
character_set_results 用于向客户端返回查询结果的字符集
character_set_ server 服务器的默认字符集
character_set_system 服务器用来保存识别符的字符集。该值一定是utf8
还有character_sets_dir 字符集安装目录

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com