事情是这样的。
初学linux,自己在本地虚拟机linux系统里搭建了web服务器。就把原来在window上开发的项目放到linux上来。我用的是rz命令用xshell来本地上传。项目其他的一切没什么问题,就mysql导入sql文件的时候出现了中文乱码的问题。但在服务器上的数据是没有问题的。
经过自己的研究并解决了问题,原因有两点:数据库编码不对,因为linux系统默认编码是以英文为主,即为latinl. 这与我们一般设置的utf8不符合,所以 这是一个原因。
应对方法:
默认登录mysql之后可以通过SHOW VARIABLES语句查看系统变量及其值。
命令:mysql> show variables like '%character%';
好,如果发现如图所示
那说明编码确实不符。
接下来需要修改mysql配置文件
vi /etc/my.cnf
在[client]下增加default-character-set=utf8
在[mysqld]下增加default-character-set=utf8
同时加上init_connect='SET NAMES utf8' (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
修改保存完成后 重启mysql服务
service mysqld restart
进入Mysql 重新查看mysql数据编码 如图所示
那么恭喜你 更改mysql数据编码成功。
2.第二点 比较简单 但往往是忽略了简单的问题 导致找不到问题所在 也还是文件编码问题
从window上上传的文件 到linux下 运行起来会存在有数据编码的问题。
sql文件我是从window上传的 所以 理所当然 这个问题就存在了。
所以 在导入sql文件之前 应该把sql文件的编码给转换成linux识别的编码 命令如下:
vi 目标文件
键入 :setfileformat=unix 回车 保存
完成后 数据恢复正常。
这文章主要是写给自己将来看的 各位前辈 如有不对的地方 还望多多指点。