mysql解决乱码

字符编码:字符与符号的二进制文件表示方法。

ASCII:英文编码。

utf-8-16:utf-8的扩展。

utf-8:几乎支持所有的语言. 可以说是各种编码的桥梁。

gbk:中文编码

 

set names gb2312;

遇到字符乱码先冷静。可能是下列两种情况:

1,数据库写入乱码。 

2,数据库读出乱码。

mysql> show variables like ‘%char%‘;

| character_set_client     | gbk                                 //客户端字符集
| character_set_connection | gbk                            //客户端与服务器端连接采用的字符集         
| character_set_database   | gbk                             // 数据库采用的字符集     
| character_set_filesystem | binary                                 
| character_set_results    | gbk                                //SELECT查询返回数据的字符集
| character_set_server     | gbk                                    
| character_set_system     | utf8                                  

在查询结果中可以看到mysql 数据库系统中客户端、数据库连接、数据库、文件系统、查询
结果、服务器、系统的字符集设置
在这里,文件系统字符集是固定的,系统、服务器的字符集在安装时确定,与乱码问题无关
乱码的问题与客户端、数据库连接、数据库、查询结果的字符集设置有关
*注:客户端是看访问mysql 数据库的方式,通过命令行访问,命令行窗口就是客户端,通
过JDBC 等连接访问,程序就是客户端

编码转换的规则是,在输入数据时将编码由“客户端编码”转换为“服务器端编码”,输出时将数据由“服务器端编码”转换为“客户端编码”。 

在登录数据库时,我们用mysql --default-character-set=字符集-u root -p 进行连接,这时我们

再用show variables like ‘%char%‘;命令查看字符集设置情况,可以发现客户端、数据库连接、

查询结果的字符集已经设置成登录时选择的字符集了。

 

数据库的字符集可以修改mysql 的启动配置来指定字符集,也可以在create database 时加上

default character set 字符集来强制设置database 的字符集

 

1.使用GBK编码的解决方案 
这个最简单 遇到设置编码的地方就是用GBK数据库gbk 然后在使用个过滤器过滤编码为gbk一切搞定。 
效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处sql结构和数据无乱码 

2.使用UTF-8编码解决方案 
所有编码都设置为UTF-8 
数据库编码utf8 
设置过滤器编码utf8 
数据库连接?characterEncoding=utf8 
然后在数据库管理工具或mysql命令行 运行 SET character_set_results = gbk; 
效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处sql结构和数据时存在乱码 

3.页面使用UTF8 数据库使用latin1的解决方案 
jap java tomcat 设置为UTF-8 
过滤器 utf8 
数据库连接?characterEncoding=latin1 
数据库其他latin1 
然后在数据库管理工具或mysql命令行 运行 SET character_set_results = gbk; 
效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处sql结构和数据时存在乱码 

 

 

 

 

mysql解决乱码,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。