(转)导入mysql数据库时出现乱码,解决方法?

本文提供了一种解决从含有中文字符的SQL文件导入MySQL数据库时出现乱码的方法:首先在SQL文件首行加入字符集设定指令,接着保存为UTF-8 NOBOM格式,并通过特定命令行导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

含有中文字符的mysql数据库文件,通过命令行导入到mysql数据库中,容易出现乱码,本文介绍sql文件导入mysql数据库中,不出现乱码的一种解决方案:

1,打开sql文件,在SQL文件第一行加入如下内容
/*!40101 SET NAMES utf8 */;

2,将SQL文件另存为UTF-8 NO BOM 格式

3. 通过ftp上传sql文件,放在根目录下就可以了。

4. 进入你的cPanel, 看到cron jobs 这个图标,点击进去,然后选Advanced (Unix Style) 。

因为只需要运行一次,所以Minute, Hour, Day, Month 都填入准备运行的具体时间,留两分钟余量就行(如果虚拟主机不在本地,可以在FTP上查看一下主机时间), Weekday填*号算了。

Command 填待运行的命令,就是导入命令:

mysql -u 用户名 -p口令 [-h 数据库主机] 数据库 < 数据库备份.sql

假设远程主机的IP为:10.0.0.1,用户名为root,密码为123。则键入以下命令:
mysql -h10.0.0.1 -uroot -p123
(注:u与root可以不用加空格,其它也一样)

例如,我的设置如下:
mysql -ucpanel123_cpuser -pcpanel -hlocalhost cpanel123_cp < /home/你的cpanel用户名/public_html/jia.sql

5.在phpMyAdmin里查看导入情况。

 

何谓BOM? "EF BB BF" 这三个字节就叫BOM,BOM的全称叫做"Byte Order Mard".在utf-8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意实在utf16中用来表示高低字节序列的。
在字节流之前有BOM表示采用低字节序列(低字节在前面),而utf8不用考虑字节序列,所以其实有无BOM都可以。


微软的记事本 Word 等只能正确打开含BOM的UTF8文件,然后UltraEdit却恰恰相反,回把BOMutf8文件 误认为ascii编码。


UTF-8的BOM是 EFBBBF,因为UE载入UTF-8文件会转成Utf16,上 述的EFBBBF 在Utf16中是FFFE(Unicode-LE的BOM),UltraEdit不认识BOM又加多 一個BOM,所以有2个FFFE。
文件就被它破坏了。

 

UTF8文件有BOM和No BOM两种,其区别在于BOM多了三个字节(EFBBBF ),对比了二进制文件,发现有这个区别,如果是NoBOM的文件就无法通过前两个字节判断是否为UTF-8文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值