MySQL会出现中文乱码的原因不外乎下列几点:
?
1.server本身设定问题,例如server字符编码还停留在latin1
?
2.table的语系设定问题(包含character与collation)
?
3.客户端程式(例如php)的连线语系设定问题
?
强烈建议使用utf8!!!!
?
utf8可以兼容世界上所有字符!!!!
?
-----------------------------------------------------------------------------------------------------------------
?
一、windows下Mysql插入中文显示乱码解决方案:对于mysql解压缩版(免安装版或zip版)进行设置字符编码
?
1、
?
当我们把zip文件格式解压到指定目录后,并且完成基本环境配置后,打开mysql 5.6.24会发现名为【my-default.ini】的文件。我们用记事本打开该文件会发现并没有【default-character-set = xxx】或者【character_set_server=xxx】,怎么回事呢?网上给出的许多方法都是直接修改这句话的xxx为utf8,不急,下面请看第二步:
?
2、
?
复制该文件,并且命名为【my.ini】,这样根目录下就有两个.ini文件了,一个是my-default.ini,一个是my.ini 。接下来我们只需修改my.ini里面的内容就行了。请看第三步:
?
3、
?
修改【my.ini】,
?
在[mysqld]下面添加 character_set_server=utf8,注意是【utf8】不是【utf-8】而且后面没有任何标点符号;
?
在【sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES】这句话后面再添加三行:
?
[client]
port=3306
default-character-set=utf8
?
4、
?
经过以上三步就ok了。保存后重启服务器,登陆后在命令行输入:【show variables like 'char%';】可查看默认字符集如下图所示:
5、
?
我的【my.ini】代码,红色代码区为修改之处:
?
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
?
[mysqld]
?
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
?
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
?
# These are commonly set, remove the # and set as required.
basedir = D:\mysql-5.6.24-winx64
datadir = D:\mysql-5.6.24-winx64\data
port = 3306
# server_id = .....
character_set_server=utf8
?
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
?
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
?
[client]
port=3306
default-character-set=utf8
?
二、LInux下Mysql插入中文显示乱码解决方案
?
mysql -uroot -p 回车输入密码
?
进入mysql查看状态如下:
mysql不能插入中文
?
默认的是客户端和服务器都用了latin1,所以会乱码。
?
解决方案:直接修改默认的Mysql配置文件彻底解决mysql无法插入中文和中文乱码的办法
?
一、进入mysql(mysql -uroot -p),查看当前
数据库字符集(status;)
?
二、查看当前系统版本(lsb_release -a)
Mysql不能插入中文
?
三、#vim /etc/
mysql/my.cnf 。(5.5以前
系统)在【client】下面加入 default-character-set=utf8
?
在【mysqld】下面加入default-character-set=utf8
?
Notice:注意 如果修改后不能启动报错试试把default-character-set=utf8改为character_set_server=utf8,仅仅加入到mysqld下面的.client就不需要加了
?
四、#vim /etc/mysql/my.cnf 。(5.5以后系统)如下修改:
?
[client]
default-character-set=utf8
?
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
?
五、重启mysql(/etc/init.d/mysql stop ? /etc/init.d/mysql ?start)
?
六、修成成功,进入mysql查看字符集(mysql>sh