MySQL解决字符乱码问题
2017-03-04 17:49
239 查看
MySQL 修改字符集
MySQL中对字符编码的操作
1)查看数据库的当前的字符编码
参数说明:
charcter_set_system:mysql所在系统使用的默认字符集;
character_set_server:服务器默认的字符集;
character_set_database:默认的数据库字符集;
character_set_client:当查询请求离开客户端后,进行编码使用的字符集;
character_set_connection:服务器接收到客户端的查询请求,使用的字符集;
character_set_results:服务器发送结果集,或返回错误信息到客户端之前,使用的字符集;
如果不希望服务器执行任何转换,设置character_set_results为NULL:
2)修改字符集参数
使用 set names charset_name 等同于以下三个语句:
3)查看字符验证集
解决创建数据库时的中文乱码方法
1)产生中文乱码的主要原因:
① 服务端创建数据库,插入中文数据乱码:
- 直接在控制台进行的插入操作:server,database参数设置问题;
- 通过sql脚本导入数据:sql的字符编码方式和database的编码方式不兼容;
② 服务端中文显示正常,客户端获取服务端的结果集乱码:
- 客户端程序的使用的字符编码和 results 编码不兼容;
③ 客户端向服务端进行数据写入操作,服务端中文数据乱码:
- 客户端的程序使用本身使用的字符编码 和 client ,connect 的编码方式不兼容;
2)解决方式:
① 方式一:直接在服务端修改MySQL字符集参数,参见如上;
② 方式二:在 创建/修改 数据库或数据表,单独指定其字符编码,同时将客户端、服务端程序同一编码为相应的字符编码;
指定数据库编码:
指定数据表编码
指定数据字段编码
一般会使用UTF-8进行编码,UTF-8支持世界上的绝大部分语言,但是UTF-8每个字符编码占3个字节,在数据传输时会比较占用带宽,如果数据库及其连带程序的语言主要是特定的某几种语言,可以根据实际要求选择字符编码,如中文编码字段的编码可以使用GBK,每个字符只占2个字节,相对于UTF-8更加节省空间;
MySQL中对字符编码的操作
1)查看数据库的当前的字符编码
mysql > show variables like 'characher%'
参数说明:
charcter_set_system:mysql所在系统使用的默认字符集;
character_set_server:服务器默认的字符集;
character_set_database:默认的数据库字符集;
character_set_client:当查询请求离开客户端后,进行编码使用的字符集;
character_set_connection:服务器接收到客户端的查询请求,使用的字符集;
character_set_results:服务器发送结果集,或返回错误信息到客户端之前,使用的字符集;
如果不希望服务器执行任何转换,设置character_set_results为NULL:
mysql> SET character_set_results = NULL;
2)修改字符集参数
set charatcer_set = charset_name
example: set character_set_database = utf8
使用 set names charset_name 等同于以下三个语句:
mysql> SET character_set_client = charset_name;
mysql> SET character_set_results = charset_name;
mysql> SET collation_connection = @@collation_database;
3)查看字符验证集
show collation like 'latin1%';
解决创建数据库时的中文乱码方法
1)产生中文乱码的主要原因:
① 服务端创建数据库,插入中文数据乱码:
- 直接在控制台进行的插入操作:server,database参数设置问题;
- 通过sql脚本导入数据:sql的字符编码方式和database的编码方式不兼容;
② 服务端中文显示正常,客户端获取服务端的结果集乱码:
- 客户端程序的使用的字符编码和 results 编码不兼容;
③ 客户端向服务端进行数据写入操作,服务端中文数据乱码:
- 客户端的程序使用本身使用的字符编码 和 client ,connect 的编码方式不兼容;
2)解决方式:
① 方式一:直接在服务端修改MySQL字符集参数,参见如上;
② 方式二:在 创建/修改 数据库或数据表,单独指定其字符编码,同时将客户端、服务端程序同一编码为相应的字符编码;
指定数据库编码:
//创建时指定
Create Database db_name
Default Character Set charset_name
[Default Character Collate collation_name];
//对已有数据库进行修改
Alter Database db_name
Default Character Set charset_name
[Default Character Collate collation_name];
指定数据表编码
//创建时指定
Create Table tb_name(column_list)
Default Character Set charset_name
[Default Character Collate collation_name];
//对已有数据表进行修改
Alter Table db_name
Default Character Set charset_name
[Default Character Collate collation_name];
指定数据字段编码
//创建时指定
Create Table tb_name(
column_name Type Character Set charset_name [Collation collation_name]
);
如:
Create Table test(
col varchar(10) Character Set utf8;
);
一般会使用UTF-8进行编码,UTF-8支持世界上的绝大部分语言,但是UTF-8每个字符编码占3个字节,在数据传输时会比较占用带宽,如果数据库及其连带程序的语言主要是特定的某几种语言,可以根据实际要求选择字符编码,如中文编码字段的编码可以使用GBK,每个字符只占2个字节,相对于UTF-8更加节省空间;
相关文章推荐
- 解决MySQL插入中文字符乱码问题
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- 解决linux的redhat版上mysql字符乱码的问题
- Hibernate向mysql中保存中文字符出现乱码问题的解决
- 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- Hibernate向mysql中保存中文字符出现乱码问题的解决
- Mysql导入excel数据,解决某些字符乱码问题
- java 向 mysql插入中文字符乱码问题解决
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- 解决MySQL在使用命令时中文字符出现乱码的问题
- XAMPP集成环境下Apache端口占用、MySQL密码及其各种中文字符乱码问题解决汇总
- Tomcat5+Mysql文中乱码问题的解决方法
- 【原创】解决jsp文件和MYSQL数据乱码的问题...
- Tomcat5+Mysql中文乱码问题的解决方法
- 解决mysql--jsp中出现的中文乱码问题
- 解决 mysql 中文乱码问题