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

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

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

推荐:《mysql视频教程》

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

ea6b69350c837e0178eba7cfcba8862.png

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

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

6585407a7238c46e265f756b0d28028.png

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

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

41774a8c047f1591c33ee2bac80f3f7.png

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

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

insert into book(id,bookname,size,price)values(1,"测试",2,3);

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

cf4e27d8dcae2e6419d04a5d934d38e.png

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

E:\mysql-5.7.28-winx64\bin>mysqldump -u root -p test > test.sqlEnter password: *******

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

Revid AI Revid AI

AI短视频生成平台

Revid AI 96 查看详情 Revid AI

mysql> use mydb;Database changedmysql> 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;
然后再查看表的编码,发现有鬼:

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配置不对,从头开始用正确流程试试吧。

先查看数据库的编码设置:show variables like 'character%';
发现很混乱:

mysql> show variables like 'character%';+--------------------------+----------------------------------------+| Variable_name            | Value                                  |+--------------------------+----------------------------------------+| character_set_client     | gbk                                    || character_set_connection | gbk                                    || character_set_database   | latin1                                 || character_set_filesystem | binary                                 || character_set_results    | gbk                                    || character_set_server     | latin1                                 || character_set_system     | utf8                                   || character_sets_dir       | D:\mysql-5.7.29-winx64\share\charsets\ |+--------------------------+----------------------------------------+

开始改,通过一系列的set
set character_set_client = utf8;
得到结果

+--------------------------+----------------------------------------+| Variable_name            | Value                                  |+--------------------------+----------------------------------------+| character_set_client     | utf8                                   || character_set_connection | utf8                                   || character_set_database   | utf8                                   || character_set_filesystem | utf8                                   || character_set_results    | utf8                                   || character_set_server     | utf8                                   || character_set_system     | utf8                                   || character_sets_dir       | D:\mysql-5.7.29-winx64\share\charsets\ |+--------------------------+----------------------------------------+

创建数据库并制定编码:CREATE DATABASE test2 CHARACTER SET utf8 COLLATE utf8_general_ci;
使用:use test2
在导入数据库文件之前,制定编码set names utf8;
导入:source F:xxxx\xxxx\mydb.sql;
不算漫长的等待之后,查询,不乱码了

mysql> select * from sp_role;+---------+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+--------------------+| role_id | role_name     | ps_ids                                                      | ps_ca                        | role_desc          |+---------+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+--------------------+|      30 | 主管          | 101,0,104,116,115,142,143,144,121,122,123,149,102,107,109,103,111,129,130,134,135,138,139,140,141,112,147,125,110,131,132,133,136,137,145,146,148 | Goods-index,Goods-tianjia,Category-index,Order-showlist,Brand-index                     | 技术负责人         ||      31 | 测试角色      | 101,0,104,105,116,117,115,142,143,144,121,122,123,149,103,111,129,134,138,112,147                                                      | Goods-showlist,Goods-tianjia,Category-showlist,Order-showlist,Order-dayin,Order-tianjia | 测试角色描述       ||      34 | 测试角色2     | 0,105,116,142,143,122                                                      | NULL                        | 测试描述12         ||      39 | 大发送到      | 101,0,104,105,116                                                      | NULL                        | 阿斯蒂芬           ||      40 | test          | 102,0,107,109,154,155,145,146,148                                                      | NULL

实战项目可以继续进行,遂生法喜。

以上就是mysql导入文件中文乱码怎么办的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1030726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在css中如何用animation制作渐变背景动画
上一篇 2025年12月2日 03:15:13
如何修复华硕网卡驱动问题导致无法上网的情况?
下一篇 2025年12月2日 03:15:21

相关推荐

  • laravel框架支持的几种数据库系统

    Laravel框架支持MySQL、PostgreSQL、MariaDB、SQL Server、SQLite和Oracle Database等数据库系统。选择数据库系统取决于特定应用程序的规模、性能、特性、成本和支持需求。 Laravel 框架支持的数据库系统 Laravel 是一个 PHP Web …

    2026年8月30日
    000
  • 怎么查看mysql是多少位

    怎么查看mysql是多少位怎么查看mysql是多少位怎么查看mysql是多少位怎么查看mysql是多少位

    查看mysql位数的两种方法:1、在cmd命令窗口中,使用cd命令进入mysql安装目录的bin目录中,再执行“mysql -V”或“mysql –version”命令,即可在输出结果中查看到位数信息。2、在mysql控制台中,执行“show variables like ‘…

    2026年8月30日 用户投稿
    000
  • laravel支持几种数据库

    Laravel 支持多种数据库连接,包括:MySQL、PostgreSQL、SQLite、SQL Server、MariaDB、MongoDB 和 Redis。要连接到数据库,您需要在 .env 文件中设置配置并使用 DB 外观进行连接。 Laravel 支持的数据库 Laravel 是一个 PHP…

    2026年8月30日
    000
  • mysql是否支持分区

    mysql是否支持分区mysql是否支持分区mysql是否支持分区mysql是否支持分区

    mysql从5.1版本开始支持分区功能。MySQL5.1中分区表达式必须是整数,或者返回整数的表达式;而MySQL5.5中提供了非整数表达式分区的支持。MySQL数据库的分区是局部分区索引,一个分区中既存了数据,又放了索引;也就是说,每个区的聚集索引和非聚集索引都放在各自区的(不同的物理文件)。My…

    2026年8月30日 用户投稿
    100
  • mysql怎么查询字段名称

    mysql怎么查询字段名称mysql怎么查询字段名称mysql怎么查询字段名称mysql怎么查询字段名称

    查询方法:1、在cmd窗口中,执行“mysql -u root -p”命令登录MySQL数据库;2、使用USE命令切换到指定数据库下,语法“USE 数据库名;”;3、使用DESCRIBE或DESC命令来查询字段名称,语法“DESCRIBE 表名;”或“DESC 表名;”,输出结果是表格形式,展示了表…

    2026年8月30日 用户投稿
    000
  • mysql怎么删除数据库

    mysql怎么删除数据库mysql怎么删除数据库mysql怎么删除数据库mysql怎么删除数据库

    删除方法:1、使用“win+r”键打开“运行”窗口,输入“cmd”,回车进入cmd命令窗口;2、在cmd窗口中,执行“mysql -u root -p”命令登录MySQL服务器;3、执行“DROP DATABASE IF EXISTS 数据库名;”命令来删除指定数据库中的所有表并永久删除该数据库,“…

    2026年8月30日 用户投稿
    000
  • mysql怎么将值转换为二进制

    mysql怎么将值转换为二进制mysql怎么将值转换为二进制mysql怎么将值转换为二进制mysql怎么将值转换为二进制

    3种转换方法:1、使用BIN()函数,可以返回指定数字的二进制值的字符串表示形式,语法“BIN(number)”,参数“number”是一个长整型(BIGINT)数。2、使用CONV()函数,可将一个进制转为另一个进制,语法“CONV(number,10,2)”,能返回指定数字的二进制值。3、使用B…

    2026年8月30日 用户投稿
    400
  • 一起聊聊MySQL全局锁

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于全局锁的相关问题,全局锁就是对整个数据库加锁。当我们对数据库加了读锁之后,其他任何的请求都不能对数据库加写锁了,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 数据库设计的初衷是处理并发问题的,作为多用户共享的资源,…

    2026年8月30日
    500
  • mysql中sum()函数怎么用

    mysql中sum()函数怎么用mysql中sum()函数怎么用mysql中sum()函数怎么用mysql中sum()函数怎么用

    在mysql中,sum()函数用于计算一组值或表达式的总和,语法为“SUM(DISTINCT expression)”,DISTINCT运算符允许计算集合中的不同值。sum()函数需要配合SELECT语句一起使用,如果在没有返回匹配行SELECT语句中使用SUM()函数,则SUM()函数会返回NUL…

    2026年8月30日 用户投稿
    000
  • Sublime连接Docker MySQL容器数据库_支持容器化开发环境统一配置

    Sublime连接Docker MySQL容器数据库_支持容器化开发环境统一配置Sublime连接Docker MySQL容器数据库_支持容器化开发环境统一配置Sublime连接Docker MySQL容器数据库_支持容器化开发环境统一配置Sublime连接Docker MySQL容器数据库_支持容器化开发环境统一配置

    要使用 sublime 连接运行在 docker 容器中的 mysql 数据库,首先要确保容器配置正确并开放远程访问权限。具体步骤包括:1. 启动容器时添加 -p 3306:3306 参数实现端口映射;2. 创建允许从外部连接的 mysql 用户,如 ‘root’@&#821…

    2026年8月30日 用户投稿
    000
  • 怎么让mysql不区分大小写

    让mysql不区分大小写的方法:1、进入mysql的安装目录,找到并打开配置文件“my.ini”;2、在配置文件的最后一行加上“lower_case_table_names=1”语句,设置大小写敏感参数“lower_case_table_names”,让mysql对大小写不敏感;3、重启mysql服…

    2026年8月30日
    000
  • mysql的安装路径怎么查看

    mysql的安装路径怎么查看mysql的安装路径怎么查看mysql的安装路径怎么查看mysql的安装路径怎么查看

    查看方法:1、鼠标右击“计算机”图标,在打开的菜单中点击“管理”;2、依次点击“服务和应用程序”-“服务”;3、在右侧服务列表中,找到mysql服务;4、选中mysql服务,点击鼠标右键,在打开的菜单中选择“属性”;5、在“mysql属性”弹窗中,查看“可执行文件路径”选项的值即可,该选项的值就是M…

    2026年8月30日 用户投稿
    500
  • mysql怎么关闭事务

    mysql怎么关闭事务mysql怎么关闭事务mysql怎么关闭事务mysql怎么关闭事务

    mysql关闭事务的步骤:1、使用“win+r”键打开“运行”窗口,输入cmd并回车,打开cmd命令窗口;2、在cmd窗口中,执行“mysql -u root -p”命令并输入密码来登录mysql服务,进入MySQL界面;3、在MySQL命令界面中,执行“start transaction;”或者“…

    2026年8月30日 用户投稿
    200
  • mysql中执行存储过程的语句是什么

    mysql中执行存储过程的语句是“CALL”。CALL语句可以调用指定存储过程,调用存储过程后,数据库系统将执行存储过程中的SQL语句,然后将结果返回给输出值;语法为“CALL 存储过程的名称([参数[…]]);”。mysql中利用CALL语句调用并执行存储过程需要拥有EXECUTE权限…

    2026年8月30日
    200
  • mysql与oracle有区别吗

    mysql与oracle有区别:1、Oracle是一个对象关系数据库管理系统(ORDBMS),而MySQL是一个关系数据库管理系统(RDBMS);2、Oracle是闭源的(收费),MySQL是开源的(免费);3、Oracle是大型数据库,而MySQL是中小型数据库;4、Oracle可设置用户权限、访…

    2026年8月30日
    100
  • 怎么查询mysql中所有表

    怎么查询mysql中所有表怎么查询mysql中所有表怎么查询mysql中所有表怎么查询mysql中所有表

    查询mysql数据库中所有表的方法:1、执行“mysql -u root -p”命令并输入密码来登录mysql数据库服务器;2、执行“USE 数据库名;”命令来切换到指定数据库;3、执行“show tables;”或“SHOW FULL TABLES;”命令,会以表格形式列出mysql数据库中的所有…

    2026年8月30日 用户投稿
    100
  • MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?

    MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?MySQL全文检索和第三方搜索引擎整合方案有哪些_优缺点分析?

    mysql 自带的全文检索功能在面对复杂搜索需求时存在明显不足,常见的整合方案包括 elasticsearch + mysql、sphinx + mysql 和 lucene/solr + mysql。1. mysql 全文检索缺点:仅支持基础分词和自然语言搜索,对中文支持弱,索引更新成本高,不支持…

    2026年8月30日 用户投稿
    100
  • mysql怎么实现分组求和

    实现方法:1、利用SELECT语句查询指定表中的数据;2、利用“GROUP BY”关键字根据一个或多个字段对查询结果进行分组;3、利用SUM()函数根据分组情况分别返回不同组中指定字段的总和,语法为“SELECT SUM(进行求和的字段名) FROM 表名 GROUP BY 需要进行分组的字段名;”…

    2026年8月30日
    100
  • mysql怎么将字段修改为not null

    mysql怎么将字段修改为not nullmysql怎么将字段修改为not nullmysql怎么将字段修改为not nullmysql怎么将字段修改为not null

    在mysql中,可以通过使用ALTER TABLE语句给字段添加非空约束来将字段修改为not null,语法“ALTER TABLE 数据表名 CHANGE COLUMN 字段名 字段名 数据类型 NOT NULL;”。ALTER TABLE语句用于修改原有表的结构,而“NOT NULL”是设置非空…

    2026年8月30日 用户投稿
    100
  • mysql怎么修改存储引擎为innodb

    mysql怎么修改存储引擎为innodbmysql怎么修改存储引擎为innodbmysql怎么修改存储引擎为innodbmysql怎么修改存储引擎为innodb

    两种修改方法:1、使用SET语句临时修改默认存储引擎,语法为“SET default_storage_engine=innodb;”,当重启客户端后就会恢复为原引擎类型。2、使用ALTER TABLE语句修改,语法“ALTER TABLE 表名 ENGINE=innodb;”,可以修改指定表的引擎类…

    2026年8月30日 用户投稿
    200

发表回复

登录后才能评论
关注微信