MySQL插入表之后中文显示乱码(个人总结篇)
来源:互联网 发布:如何开通淘宝客 编辑:程序博客网 时间:2024/06/05 05:50
MySQL插入表之后中文显示乱码(总结篇)
近期在学习PHP、Ajax相关的知识,第一次接触命令行的MySQL,遇到了一些问题,以下都是查询了很多资料总结的。
我目前是win8系统,用XAMPP搭的本地服务器和数据库,需要插入一些表格并将其显示出来,因为表格中有中文字符,所以就发生了乱码的问题。
问题解决方法:
一、查看数据库编码:
发现问题了之后,首先应该查看数据库编码:
show variables like'%char%';
二、将客户端的编码设为gbk:
两种暂时修改的方式(这种方式重启之后设置就恢复了):
set names 'gbk';
(注意是names不是name)
或者输入:
set character_set_results=gb2312
两者的不同之处就是第一种将client、connection、results(也就是客户端)全部改为了gbk;第二种只是把results改为了gbk,结果是一样的:
在XAMPP界面打开MySQL的config下的my.ini文件,找到[client]、[mysqld]、[mysql],现在大概是这么一个情况,什么都没有加(因为在以下的方法中会加一些语句,如果修改了这些语句就不用每次都更改编码了可以一劳永逸,但是解决我的问题的方法还没有找到一劳永逸的,就每次都输入set names 'gbk';吧)
贴个图:
完成之后查看我们之前插入的带有中文数据的表(在此过程中不用重新删除表或者数据库,按照上面方法改个编码方式就好了):
奏是这么简单,数一下这一路走过来的坑,有些坑是自己踩进去的,应该说不同的解决方法适应不同的情况吧,下面贴出其他情况的解决方案,上面解决不了的可以看看下面的:
其他方法一:
本方法引用:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html
(这个方法和上面的解决方法几乎一致,但是楼主后面有个一劳永逸的步骤,我没实验成功,但是还是提供给大家参考)
一、查看数据库编码:show variables like'%char%';
MySQL 有六处使用了字符集,分别为:client 、connection、database、results、server 、system。其中与服务器端相关:database、server、system;与客户端相关:connection、client、results 。
二、解决客户端插入数据或显示数据的乱码问题
当前的 cmd 客户端(DOS)输入采用 GBK 编码,而数据库的编码格式为 UTF-8,编码不一致导致了乱码产生。修改 connection、 client、results 的编码集来告知服务器端当前插入的数据采用 GBK 编码,而服务器的数据库虽然是采用 UTF-8 编码,但却可以识别通知服务器端的 GBK 编码数据并将其自动转换为 UTF-8 进行存储。可以使用如下语句来快速设置与客户端相关的编码集:
第一种是暂时修改的方法
set names 'gbk
第二种是永久性修改:在XAMPP界面打开MySQL的config下的my.ini文件,找到[mysqld]、[mysql],默认为(虽然我的默认什么都没有):
[mysqld]
character_set_server=utf8
[mysql]
default-character-set=utf8
修改[mysql]的为:
[mysql]
default-character-set=gbk
重新启动 MySQL 服务
其他方法二:
本方法引用:http://blog.csdn.net/violet_echo_0908/article/details/51498829
在XAMPP界面打开MySQL的config下的my.ini文件,找到[client]、[mysqld]、[mysql]设置为:
(注意default-character-set和character_set_server是不一样)
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf
[mysql]
no-auto-rehash
重新启动 MySQL 服务
其他方法三:
本方法引用:http://www.cnblogs.com/houqi/p/5713176.html
在XAMPP界面打开MySQL的config下的my.ini文件,找到[client]、[mysqld]、[mysql]设置为:
(注意default-character-set和character_set_server是不一样,这是个坑)
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
collation-server=utf8_general_ci
之后要确认要三个方面:更改数据库的默认字符集为utf8,更改表的字符集为utf8,更改列的字符集为utf8:
先用命令查看表的编码为:
show create table table.name(数据库名.表名);
修改方法:
ALTER DATABASE `数据库` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c
ALTER TABLE `数据表` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
其他方法四:
本方法引用:http://www.jianshu.com/p/4c6a27542df4
(本方法和二相似,列出来主要说明一下,方法三中说的坑,这个楼主遇到了)
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
[mysql]
default-character-set=utf8
重启MySQL,重启后设置的编码依旧生效(之前创建的数据库需要重新创建)
其他方法五:
本方法引用:http://blog.csdn.net/congzi0424/article/details/51382252
因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码改成gb2312才能够正常显示中文。使用如下的命令设置输出窗口使用的字符编码:
set character_set_results=gb2312;
(之前找到这个方法的时候输入set character_set_results=gb2312;但是中文乱码问题没有解决,后来写这篇总结的时候改成了set character_set_results=gbk;看看哪种适用咯)
其他方法六:
本方法引用:https://yq.aliyun.com/articles/40384
这个有关chcp命令的方法,其实是解决在cmd窗口中显示UTF-8字符(应该是打开一个文件的问题),之前没看清楚,但是也贴出来做一个总结:
chcp是MS DOS中的命令,用来显示或设置活动代码页编号的。
输入一下命令可以查看当前代码页:
chcp
比如在默认的cmd窗口中,输入chcp
936表示当前使用的是简体中文(GB2312)编码。UTF8代码页的编号为65001
现在让cmd支持UTF8:
win+R运行cmd后输入:
chcp 65001
页面变成:
如果想要chcp每次打开都是65001,就用regedit打开 注册表,HKEY_CURRENT_USER\Console,双击打开CodePage,十进制中修改为65001
窗体上右键,选择属性,在字体中设置Lucida Console,确定:
但是此时的窗口中使用ctrl+space是不能切换输入法的(查了conime.exe等方法都不能实现,如果可以的话烦请告诉我哈),也就是不能输入中文,又是一个坑。
最后贴个最大的总结篇,里面描述的也很详细:
http://blog.csdn.net/ACMAIN_CHM/article/details/4174186
以上都是一个下午查到的各类方法,方法很多,但是感觉有点繁杂,所以又花了点时间总结了一下,希望能帮助遇到这个问题的人。关于里面是为什么这样设置,字符集的一些知识,我也还没有研究的特别深入(所以才会试了那么多中方法,踩了那么多坑啊。⊙ o ⊙)
阅读全文
0 0
- MySQL插入表之后中文显示乱码(个人总结篇)
- 个人总结 mysql 中文乱码
- mysql插入中文字符串乱码显示???
- mysql插入数据中文显示问号/乱码
- MYSQL插入中文显示乱码解决方案
- Mysql不能插入中文和中文显示乱码问题
- mysql不能插入中文字符以及中文显示乱码问题
- 【MySql】MySql数据库中插入中文字符,显示乱码解决办法
- 插入MYSQL中文乱码
- mysql插入中文乱码
- mysql 插入中文 乱码
- Mysql插入中文乱码
- mysql插入中文乱码
- Mysql 插入中文乱码
- mysql插入中文乱码
- mysql 插入中文乱码
- MySQL插入中文乱码
- MySQL插入中文乱码
- A Boring Question HDU
- ThreadLocal
- H.264中I帧和IDR帧的区别
- PAT乙级1048. 数字加密(20)
- 2017第34届广州国际特许连锁加盟展览会会刊(参展商名录)
- MySQL插入表之后中文显示乱码(个人总结篇)
- ubtun系统默认是没有激活root用户
- 最小K个数之和
- 【Windows 10 应用开发】使用x-Bind标记动态获得计算结果
- 网络爬虫系列笔记(1)——Re库、正则表达式
- Windows XP怎样实现自动登录而无需输入密码
- 从基础学AI---数学(1)
- 【操作系统学习日记】1.环境安装(virtualbox+Centos)
- 前端插件之侧边定位随屏幕滚动而滚动