0791-85271700
(9:00-17:30)

当前位置:首页 » 文档 » 使用心得 » 正文
QQ交流群:626599871、94092429(满)、34688139(满)

MySQL数据库导入数据后,数据是乱码

2017-07-28 11:08 浏览次数:

导入数据时,有以下几个方面会影响MySQL数据库的编码。

安装时候的编码设置

MySQL默认安装的编码是latin1。安装时最好选择为utf8utf8mb4。需要注意的是,MySQL的编码分为客户端(指命令行客户端)和服务器端两部分。

服务器端的编码是指数据库服务器本身的编码,即创建数据库的时,数据库的默认编码。

客户端编码是指使用命令行客户端连接数据库时,使用的编码。比如在命令行里面输入mysql命令连接数据库,这时就是使用MySQL命令行客户端。

创建数据库的编码设置

在创建数据库时,可以指定数据库编码。这是决定数据库编码最终的一步,安装时设置的编码只是默认的编码,也就是在创建数据库时,如果没有指定编码,则会使用数据库默认的编码。

连接数据库的编码设置

在命令行里面输入mysql命令连接数据库(包括使用source命令导入数据),会使用MySQL客户端的编码设置连接数据库。在使用MySQL其他客户端直接执行sql文件(如Navicat的“运行SQL文件”功能),也可能会使用MySQL客户端的编码。

数据库脚本文件的编码

在Windows创建的文件格式一般是GBK编码。Jspxcms的数据库脚本文件使用的是UTF-8编码。

怎样导入才能不乱码

要做到导入数据不乱码,要做到三点:数据库编码为UTF-8、客户端编码为UTF-8、数据库脚本文件编码为UTF-8。

其中Jspxcms的数据库文件本身就是UTF-8编码,数据库编码在创建数据库的时候可以选择为UTF-8编码。这两个条件较容易达成,但MySQL客户端编码则需要在安装的时候设置,而这一个往往很容易被忽略,且安装之后较难修改(需修改MySQL的配置文件,重启MySQL),是发生乱码的主要根源。即使是使用可视化客户端,如果直接选择执行SQL文件,也是可能会使用MySQL客户端编码。

因此,要避免乱码最好的办法是在确认数据库编码为UTF-8的前提下,打开sql脚本文件,将文件内容复制到MySQL可视化客户端执行(如Navicat的查询窗口)。

数据库的数据没有乱码,而网页显示的数据有乱码

这种情况通常为MySQL数据库版本较新且MySQL驱动较旧导致的,如使用MySQL5.7,而MySQL驱动版本较低(如mysql-connector-java-5.1.24.jar,位于/WEB-INF/lib目录),这时只要使用新版本的数据库驱动即可解决(如mysql-connector-java-5.1.41.jar)。