-
mysql中character_set_client和result必须相同吗?10
我们使用php或者其他客户端访问时一般会直接使用set names 'utf8',这样client和result就会同时为utf8,不会出现什么问题。但如果character_set_client和character_set_result不相同的话会很容易出现乱码,那么这两个就必须要相同喽?是吗?
如果确实要相同的话,为什么要拆成两个变量呢?
另外,character_set_connection又有什么特殊作用呢?为什么特殊拿出来呢?
比如字符集转换的过程:character_client => connection => server/database ,中间为什么要添加一个connection字符集呢,为什么不直接从client => server/database呢?
问题补充:引用因为character_set_client变量并不作为接收显示时使用的字符集,只有character_set_results才作为显示时使用的字符集,所以需要将其拆成两个变量。
这个我知道,但是一般情况下你不应该将客户端发送的数据和发送给客户端的数据相同的字符集吗?
什么情况下需要将这两个设置成不一样的?如果没有这种情况,为什么要将这两个分开?
问题补充:引用2、要保证通讯的字符集与数据库的字符集一致,即character_set_client,character_set_connection与character_set_database一致;
不是吧,比如使用windows的cmd操作mysql数据库,向其中插入汉字。我的数据库是utf8的字符集,但因为cmd窗口默认的字符集是gbk,所以我要设置client为gbk,这样字符集由gbk=>utf8转换,才能被数据库正常使用。因此,client不一定要跟database一致。
在这个cmd上我设置了connection,看看他对乱码的影响。设置connection为任何支持中文的字符集,都不回对字符处理带来任何影响。同时得出结论,在client设置正确的情况下,设置connection为任何支持传输的数据的字符集都可以。也不一定要跟client和database保持一致。
于是我感觉connection在这里好像多此一举,客户端查询时:client=>connection=>table/database,返回数据时:results<=connection<=table/database。
connection好像多此一举。2009年2月09日 16:35
5个答案 按时间排序 按投票排序
-
您的思考与我的疑问一致,我后来想了想,大部分情况下,请示不需要connetion这个设置,除非是为了降低网络传输压力,将其设置为占用字节较少的字符集。
2015年1月26日 16:28
-
1、要保证数据库中存的数据与数据库编码一致,即数据编码与character_set_database一致;
2、要保证通讯的字符集与数据库的字符集一致,即character_set_client,character_set_connection与character_set_database一致;
3、要保证SELECT的返回与程序的编码一致,即character_set_results与程序编码一致;
4、要保证程序编码与浏览器编码一致,即程序编码与<meta http-equiv="Content-Type" content="text/html; charset=?"/>一致。
2009年2月13日 08:33
-
character_set_client,character_set_connection这两个变量仅用与保证与character_set_database编码的一致,而character_set_results则用与保证SELECT返回的结果与程序的编码一致。
例如,你的数据库(character_set_database)用的是utf8的字符集,那么你就要保证character_set_client,character_set_connection也是utf8的字符集。而你的程序也许采用的并不是utf8,比如你的程序用的是gbk,那么你若把character_set_results也设置为utf8的话就会出现乱码问题。此时你应该把character_set_results设置为gbk。这样就能保证数据库返回的结果与你的程序的编码一致。
2009年2月13日 08:33
-
character_set_client:客户端发送过来文字的字符集
character_set_results:发送给客户端的结果所使用的字符集
character_set_connection:用于连接的字符集2009年2月10日 15:24
-
因为character_set_client变量并不作为接收显示时使用的字符集,只有character_set_results才作为显示时使用的字符集,所以需要将其拆成两个变量。
character set是一组符号和他们对应的编码;collation是一组规则,规定了字符之间如何比较(大小)。每一个character set都对应着一组(至少一个)collation,而每一个collation对应唯一一个character set,通常他们两个需要成对出现,已完成数据库里的相关操作,比如排序,字符串连接等操作。
在上述四个级别上,对character set和collation都有默认的设置,server层的默认为latin1和latin1_swedish_ci.(ci:case insensible)。在创建各个层次的实体时都有相应的子句或者候选项可以使用,以显式的声明各个实习将要使用的字符集和校对集。
2009年2月10日 15:23
相关推荐
mysql链接建立之后,通过如下方式设置编码: 复制代码 代码如下: mysql_query(“SET character_set_connection=” . $GLOBALS[‘charset’] . “,character_set_results=” . $GLOBALS[‘charset’] . “,character_...
有一个应用类型表,表中有parentId字段和parentIds字段,前者为父级id,后者为多级父级id,在库中都是varchar类型,parentIds由多个父级id拼接而成由”,”分隔. 组长告知我可以使用该函数,就去进行了了解与使用. 语法 ...
代码如下:character_set_client、 character_set_connection、character_set_results 就始终都是和服务器端保持一致了,即便在mysql客户端加上选项 代码如下:–default-character-set=utf8 也不行,除非连接进去后...
博客:PostgreSQL的学习心得和知识总结(六十五)|关于PostgreSQL数据库 实现MySQL数据库find_in_set()函数 的实现方案
'character_set_client', 'utf8' 'character_set_connection', 'utf8' 'character_set_database', 'latin1' 'character_set_filesystem', 'binary' 'character_set_results', 'utf8' 'character_set_server', 'latin...
主要介绍了Mysql中FIND_IN_SET()和IN区别简析,设计实例代码,具有一定参考价值。需要的朋友可以了解。
很多时候我们在设计数据库... 先看mysql手册中find_in_set函数的语法: FIND_IN_SET(str,strlist) 假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。一个字符串列表就是一个由一些被
40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!...
首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。 现在有篇文章他既是头条,又是热点...MySQL手册中find_in_set函数的语法: FIND_IN_SET(str,strlist) str
mysql_5.7_x64 for linux
主要介绍了mysql中find_in_set()函数的使用以及in()用法详解,需要的朋友可以参考下
MySql的server和client 版本5.6.34 类型 rpm 安装包: MySQL-client-5.6.34-1.linux_glibc2.5.x86_64.rpm MySQL-server-5.6.34-1.linux_glibc2.5.x86_64.rpm 亦可在官网下载
前言 字符集是一套符号和编码的规则,不论是在oracle数据库还是在mysql数据库,都存在字符集的...mysql> show variables like 'character_set%'; +--------------------------+----------------------------------+ |
$result = mysql_query($sql); while($row = mysql_fetch_row($result)) { echo $row[‘cid’].’::’.$row[1].' ’; } $result = mysql_query($sql); while($row = mysql_fetch_array($result)) {
「访问管理」Comprehensive_analysis_of_the_mysql_client_attack_chain - 基础架构安全 防火墙 漏洞分析 渗透测试 云安全 终端安全
7_MYSQL视频教程 字符集操作原理与乱码解决方案character_set_client_character_set_connection_character_set_results
MySQL-Front_Setup中文版支持win32和win64 附带安装教程
character_set_results , MySQL将存储的数据转换成character_set_results中设定的字符集发送给用户。 DISCUZ并没有使用set NAMES character SET NAMES ‘x’语句与这三个语句等价: mysql> SET character_set_cl