• 背景:数据库表信息乱码问题
  • 影响:数据库连接初始化中断
  • 原因:init_connect参数设置问题,参数为不可执行语句。

1.1 DB字符集参数


#数据库中的字符集设置(以下全部为修改过后的结果)
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+ #会话级的参数设置,仅对当前回话有效,set names utf8是会话级的参数,当前会话可以修改当前的连接参数,从而覆盖全局参数设置,默认全局参数设置。
#由于上线是super账户,会话级参数如下,而普通账户的参数都是utf8,所以查看表时导致乱码,而super账户下正常显示。
#乱码最终的解决方案是:super账户所有会话级参数(除character_set_results设置为latin1)设置为utf8, 查看表的信息,执行alter...modify... (内部原理详见后文)
mysql>show variables like "%char%";
+--------------------------+---------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 | #全局参数设置,对全局用户有效
mysql>show global variables like "%char%";
+--------------------------+---------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 | #连接初始化参数,该参数对super用户无效,仅对普通用户有效,每一个连接首先进行初始化:执行表中的sql. set names utf8等效set 客户端的字符集参数(client,connection,results).
mysql > show global variables like "%init%";
+------------------------+----------------+
| Variable_name | Value |
+------------------------+----------------+
| init_connect | set names utf8 |

1.2 字符集解释与设置

 #character_set_client :客户端来源使用的字符集
#character_set_connection :连接层使用的字符集
#character_set_database : 当前数据库使用的字符集(默认latin1)
#character_set_results : 显示结果使用的字符集
#character_set_server : DB内部使用的字符集
#character_set_system : 系统元数据使用的字符集 #init_connetc : 普通用户连接,执行其值(sql) msyql> set names utf8;
#set names 等效以下:
msyql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;
myqsl> set character_set_results=utf8;
#init_connect="set names utf8"; 保证普通用户的连接使用的utf8字符集。php中连接数据库前也进行字符集的初始化设置。
#这3个参数并不能直接在配置文件中设置,一劳永逸的设置方法是在配置文件中:
[msyql]
default-character-set = utf8
[mysqld]
character-set-server = utf8 (5.6版本也可以是default-character-set =utf8 )

1.3 DB字符集的转换过程

1.4 kaogmat转换方案

上线客户端参数是使用的latin1, 因此查看显示结果(传出)时设置会话参数为 character_set_results=latin1, 其它参数(传入)为utf8, 根据表的信心,重新执行

alter table table_name modify col_name ......,modify....;

mysql字符集问题的更多相关文章

  1. 如何修改MySQL字符集

    首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则.这两个参数集可以在数据库实例.单个 ...

  2. Mysql字符集设置

    转 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等:• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encodi ...

  3. MySQL字符集

    字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...

  4. mysql5.5字符集设置的一点变化(对于中文乱码问题,需要设置mysql字符集)

    工作中因为字符集问题没少头疼,还犯过一次错误,还好拯救及时,没有发生重大事故,唉,弄清楚点还是非常有必要的: 例如我的工作环境为CTR+redhat5+mysql5.5 在导入sql语句的时候必须要注 ...

  5. Mysql字符集知识总结

    字符集&字符编码方式 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,这里的字符可以是英文字符,汉字字符,或者其他国家语言字符. 常见字符集 ...

  6. MySQL字符集的修改和查看

    1.关于MySQL字符集 MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式(Collation). MySQL对于字符集 ...

  7. MySQL字符集转换引发插入乱码问题

    根据http://www.cnblogs.com/cchust/p/4601536.html进行验证测试 问题背景 在mysql上面执行一条普通的insert语句,结果报错: Incorrect st ...

  8. MySQL 字符集设置

    /*************************************************************************** * MySQL 字符集设置 * 说明: * 数 ...

  9. [MySQL] 字符集的选择

    1. Mysql支持的字符集 MySQL服务器可以支持多种字符集,不同的字段都可以使用不同的字符集. 查看所有可用字符集: show character set; select * from info ...

  10. Mysql字符集设置 2 图

    基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如'A'.'B'等: • 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encodin ...

随机推荐

  1. [Q]关于无法进入主界面问题解答

    打图精灵适用于AutoCAD2007或更高版,低于2007版无法使用. 若在安装打图精灵前AutoCAD已经打开,则需要将AutoCAD重新打开,然后使用“QPlot”命令. 若重新打开仍然调不出界面 ...

  2. java 格式化输出方法

    在javaSE5中推出了printf方法来输出文本到控制台,在java中现在有如下方法可以输出文本: 1.System.out.println(....) //输出并换行 2.System.out.f ...

  3. XCODE 控件连接(关联)不上变量 怎么解决

    一个很低级的错误,原因就在于控件所属的UIViewController没有设置对应的CLASS, 即变量所属的class, 设置好即可解决. 解决办法: alt + command + 3进入身份检查 ...

  4. Hibernate 注解说明

      转:http://blog.csdn.net/u012312373/article/details/46566081   1.类级别注解 @Entity     映射实体类 @Table    映 ...

  5. HDU 5572 An Easy Physics Problem (计算几何+对称点模板)

    HDU 5572 An Easy Physics Problem (计算几何) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5572 Descripti ...

  6. appium元素定位及操作

    1.测试用例准备 数据准备   前提条件   操作步骤    预期结果 2.TestNG 用例组织:@Test @Before Class 结果验证:Assert 数据驱动:@DataProvide ...

  7. curl 使用

    1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性 ...

  8. sqlserver2012评估期已过问题处理

    于之前安装sqlserver2012忘记输入序列号,现在出现评估期已过的问题,网上忙活半天,才解决,发现网上叙述都很凌乱,而且只有大意,新手很难操作,所以把我操作的过程分享给大家 步骤阅读   百度经 ...

  9. Monkey总结

    Monkey是一个快速检查内存泄露的好工具,可以初步发现较明显的内存泄露问题. 什么是内存泄露?是指不在使用的对象持续占有内存,造成内存空间的浪费. 检查内存泄露的基本操作步骤: 1.运行Monkey ...

  10. 使用PhotoShop

    详细请看:http://blog.sina.com.cn/s/blog_73dc36510101ahim.html