快速业务通道

mysql中文乱码,无法插入中文的解决办法总结

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-07

有6个关键点使用字符

clinent connection database results server system

可以通过在mysql控制台下输入:show variables lilke ‘character_set_%’;查看

mysql4.1以后版本都支持多字符集的支持,但是安装默认的字符集竟然是latin1这个瑞典文,很多人想安装discuz等论坛为gbk、utf-8等字符集的论坛就出现了一些问题.最近我在网上找了一些资料,加上自己又专门在一台linux服务器上试验了两天的经历,基本解决了字符集的问题,现将我的心得写出来,供广大网游参考.
一、原理篇:
mysql服务器中有六个关键位置使用了字符集的概念,他们是:client 、connection、database、results、server 、system.
a、其中client是客户端使用的字符集,相当于网页中的字符集设置如下
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8">.
b、其中的connection是连接数据库的字符集设置类型,如果php没有指明连接数据库使用的字符集类型
就按照服务器端默认的字符集设置.
c、其中database是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装
时指定的字符集设置.
d、results是数据库给客户端返回时使用的字符集设定,如果没有指明,使用服务器默认的字符集.
e、server是服务器安装时指定的默认字符集设定.
f、system是数据库系统使用的字符集设定.
system一般默认是utf-8字符集,server是最高的字符集设定,database没有单独设定就按照server的字符集设定,其他都是按照server的设定设置字符集.还有,数据库内的每个表和字段也都有字符集的概念,一般都是根据上一级结构决定自身的字符集,比如表就根据database库的设定决定自己的字符集,字段根据表来决定自己的字符集.

Empire CMS,phome.net

二、统一字符集的方法:(以utf-8字符集为例,他是目前支持文字种类最广的字符集)
1、彻底解决字符集的方法:
要彻底解决字符集的方法就是让mysql在安装的时候就是用utf-8的字符集设定,这样可以使上面的六个关键点的编码都为utf-8.
a、 在windows下安装mysql有提示可以选择字符集,我们选择utf-8就可以了.

观者注:修改了mysql的字符集为utf-8,结果还是无法插入中文.解决:

原因是中途修改server的字符编码,但database的字符编码还是以前的,需要删除后,重新新建一个database后就可以插入中文.
b、在linux下有三种安装方法,第一种是rpm包安装,这种我没有使用过没有发言权.
第二种为可执行程序安装,这种安装已经被编译成了latin1这种瑞典语的字符集,无法完全解决字符集问题,这个版本我们后面会讲到怎么解决字符集问题.

第三种为源码自行编译安装,这种安装可以在编译时设置字符集类型,这部分主要讲这种安装方式.
在编译mysql是我们可以用这样的指令:./configure --default-character-set=utf8
这样,在编译的时候,就会把mysql的server项编译成utf8的编码,这样这个mysql下建立的所有数据库都将使用utf8
编码存储,所有有关的方面都是utf8编码.
2、局部解决字符集的方法:
如果遇到自己的数据库使用的是默认安装的latin1字符集的(很奇怪为什么mysql要使用这么个默认字符集)
的情况我们可以这样来解决.
a、默认请况下我们在mysql命令行使用status指令察看状态,可以看到如下内容:
mysql&gt; status
--------------
mysql Ver 14.7 Distrib 4.1.9, for pc-linux-gnu (i686)

Empire CMS,phome.net

Connection id: 62
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号