一尘不染

MySQL和UTF-8

sql

在MySQL中,这样做之间有什么区别:

SET NAMES 'utf8'

和:

SET CHARACTER SET 'utf8'

我看过MySQL的“连接字符集和排序规则”文档页面,但我仍然有些困惑…是否需要同时发出两个命令才能使MySQL UTF-8知道?


阅读 120

收藏
2021-05-23

共1个答案

一尘不染

设置名称

SET NAMES指示客户端将使用什么字符集将SQL语句发送到服务器。这意味着SET NAMES 'cp1251'告诉服务器“此客户端的未来传入消息位于字符集cp1251中。”它还指定了服务器用于将结果发送回客户端的字符集。

设置字符集

SET CHARACTER SET与相似SETNAMES,但将character_set_connection和设置collation_connectioncharacter_set_databasecollation_database。一条SETCHARACTER SET x语句等效于以下三个语句:

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

是否需要发出两个命令才能使MySQL UTF-8知道?还是SET NAMES够了?

设置名称就足够了。

2021-05-23