mysql导入文件中文乱码怎么办


本文摘自PHP中文网,作者藏色散人,侵删。

mysql导入文件中文乱码的解决办法:首先创建数据库并制定编码;然后在导入数据库文件之前,制定编码set names utf8即可。

推荐:《mysql视频教程》

继续昨天的问题,数据库配置好后,查询表发现中文乱码了,看了网上的几个方法也没解决。
感觉是导入的sql文件问题,那么逆向的思考,用命令创建个数据库,添加些数据,然后导出来看看什么情况。
向表内插入数据的时候发现报错:
ERROR 1366 (HY000): Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'bookname' at row 1

ea6b69350c837e0178eba7cfcba8862.png





这就奇怪了,查看表结构:
show create table book;



6585407a7238c46e265f756b0d28028.png



看到了一个不想看到的编码格式latin1,果断改掉,通过命令:alter table book default character set utf8;
改完看到一个神清气爽的结果,表的编码改过来了,但还存在一个“什么鬼?”,字段有个乱码latin1 :



41774a8c047f1591c33ee2bac80f3f7.png



果断再改,通过命令:alter table book change bookname bookname varchar(32) character set utf8;
改完后也不看了,直接插数据试试:

1

2

3

4

5

insert into book

(id,bookname,size,price)

values

(1,"测试",2,3)

;

插入成功,查看数据是不是还中文乱码,发现并不乱码了:



cf4e27d8dcae2e6419d04a5d934d38e.png

那么开始进行下一步,导出sql文件,进入到mysql的bin目录下,开始通过命令导出,这个过程需要输入密码

1

2

E:\mysql-5.7.28-winx64\bin>mysqldump -u root -p test > test.sql

Enter password: *******

导出的文件,表的编码格式utf8,与之前导入文件的比较并看不出什么问题。
那么,就是之前导入文件的过程,创建数据库的过程除了问题,查看之前导入的mydb.sql 的mydb数据库结构,果然不对:

1

2

3

4

5

6

7

8

9

mysql> use mydb;

Database changed

mysql> show variables like 'character_set_database';

+------------------------+--------+

| Variable_name          | Value  |

+------------------------+--------+

| character_set_database | latin1 |

+------------------------+--------+

1 row in set, 1 warning (0.00 sec)

遂修改之:alert database mydb character set utf8;
然后再查看表的编码,发现有鬼:

1

2

3

4

5

6

7

8

9

10

11

12

13

mysql> show create table sp_user_cart;

+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table        | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |

+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| sp_user_cart | CREATE TABLE `sp_user_cart` (

  `cart_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '涓婚??',

  `user_id` int(11) unsigned NOT NULL COMMENT '瀛???id',

  `cart_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '璐??╄溅????淇℃???浜?缁存?扮?搴?????淇℃?',

  `created_at` timestamp NULL DEFAULT NULL,

  `updated_at` timestamp NULL DEFAULT NULL,

  `delete_time` timestamp NULL DEFAULT NULL,

  PRIMARY KEY (`cart_id`)

) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8

utf8mb4_unicode_ci 这个东西是怎么出来的...
然后改了编码,查询,还是不对,想起来之前创建数据库,可能是忘记设置编码,导入的东西本来就乱码了,也或者是my.ini配置不对,从头开始用正确流程试试吧。

阅读剩余部分

相关阅读 >>

mysql只能做小项目?是时候说几句公道话了!

mysql数据库存储过程基本语法讲解

java中获取mysql连接三种方法介绍(图)

mysql读写性能测试的简单记录

mysql数据库如何升级脚本制作过程分享

mysql分区之hash分区详解

linux下怎么打开mysql数据库

怎样修改mysql列的数据类型?

从mongodb开始浅谈数据库的知识

如何让mysql中单句实现无限层次父子关系查询

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...