MySql 中文乱码处理
2013-04-23 21:30
225 查看
通过MySql.Data.dll向MySql发生Sql时如果sql语句中存在中文,那么发送的MySql服务器时就会变成乱码。
因为MySQL处理连接时,外部连接发送过来的SQL请求会根据以下顺序进行转换:
character_set_client //客户连接所采用的字符集
|
character_set_connection //MySQL连接字符集
|
character_set_database //数据库所采用的字符集(表,列)
|
character_set_results //客户机显示所采用的字符集
产生乱码的根本原因在于:
1.客户机没有正确地设置client字符集,导致原先的SQL语句被转换成connection所指字符集,而这种转换,是会丢失信息的,如果client是utf8格式,那么如果转换成gb2312格式,这其中必定会丢失信息,反之则不会丢失。一定要保证connection的字符集大于client字符集才能保证转换不丢失信息。
2. 数据库字体没有设置正确,如果数据库字体设置不正确,那么connection字符集转换成database字符集照样丢失编码,原因跟上面一样。
解决办法:
1. 将服务端mysql.ini 中[b]default-character-set设置为utf8。[/b]
default-character-set=utf8
2. 在带中文的Sql语句前加上
set names 'utf8';
这样就不会出现乱码了。
因为MySQL处理连接时,外部连接发送过来的SQL请求会根据以下顺序进行转换:
character_set_client //客户连接所采用的字符集
|
character_set_connection //MySQL连接字符集
|
character_set_database //数据库所采用的字符集(表,列)
|
character_set_results //客户机显示所采用的字符集
产生乱码的根本原因在于:
1.客户机没有正确地设置client字符集,导致原先的SQL语句被转换成connection所指字符集,而这种转换,是会丢失信息的,如果client是utf8格式,那么如果转换成gb2312格式,这其中必定会丢失信息,反之则不会丢失。一定要保证connection的字符集大于client字符集才能保证转换不丢失信息。
2. 数据库字体没有设置正确,如果数据库字体设置不正确,那么connection字符集转换成database字符集照样丢失编码,原因跟上面一样。
解决办法:
1. 将服务端mysql.ini 中[b]default-character-set设置为utf8。[/b]
default-character-set=utf8
2. 在带中文的Sql语句前加上
set names 'utf8';
这样就不会出现乱码了。
相关文章推荐
- ubuntu下python处理mysql中文乱码问题
- Mysql存储过程内中文乱码,如何处理
- mysql 安装时选错参数后出现中文乱码的处理
- MySQL写入中文乱码之处理character_set_server编码
- mysql查询使用Concat中文乱码处理
- mysql处理Latin 中文繁体字乱码解决方案
- Tomcat5.0+mysql配置JDBCRealm,DBCP,ssl,中文乱码处理
- Java插入MySQL中文乱码,简单的处理方法
- mysql处理中文乱码的问题
- 网上一次MySQL中文乱码问题的处理过程
- mysql中文乱码处理
- 解决mysql生僻字中文乱码显示异常处理举例
- Java连接MySQL中文乱码处理
- 网上一次MySQL中文乱码问题的处理过程
- Hibernate连接Mysql中文乱码处理
- 关于解决Mysql中文乱码问题处理,Windows\Linux\Unix
- mysql中文处理乱码问题(转)
- mysql处理Latin 中文繁体字乱码解决方案
- wdcp/linux/GNU mysql中文乱码处理
- Java连接MySQL中文乱码处理