解决MySQL命令行导入SQL脚本中文乱码的方法
在使用MySQL命令行工具执行包含中文数据的建库或插入语句时,经常遇到中文变成问号或乱码的情况。这是因为命令行客户端的默认字符集通常与脚本编码不一致导致的。本文将介绍如何通过修改配置文件或在脚本中添加指令来解决这一问题。
问题现象
在图形界面管理工具(如 MySql Query Browser)中执行脚本通常没有问题,但切换到 mysql 命令行工具后,如果脚本中包含中文字符,存入的数据就会显示为乱码或 ??? 。
解决方案一:修改配置文件 my.ini
此方法通过修改 MySQL 安装目录下的 my.ini 文件,将命令行客户端的默认字符集设置为 UTF-8。
第1步:定位配置文件
打开 MySQL 的安装目录,找到 my.ini 文件。
第2步:修改字符集设置
在文件中找到 [mysql] 段落,将其中的 default-character-set=latin1 修改为:
default-character-set=utf8
保存文件。
第3步:重启服务
重启 MySQL 服务使配置生效。此后使用命令行导入时即可正常识别 UTF-8 编码。
注意:此方法需要修改服务器配置文件,对于无法直接访问服务器配置的远程环境可能不适用。
解决方案二:在SQL脚本中指定字符集
如果不希望修改服务器配置,可以在 SQL 脚本文件中添加特定的字符集设置命令。这是最通用的方式,适用于大多数版本。
需要调整的关键位置包括:脚本开头、创建数据库语句、创建表语句以及插入数据前。
具体操作示例
set character set utf8;
drop database if exists db_name;
create database db_name DEFAULT CHARACTER SET utf8;
use db_name;
drop table if exists table_name;
create table table_name (
PID int AUTO_INCREMENT,
PName nvarchar(20) null,
Remark nvarchar(50) null,
constraint PK_POSITION primary key (PID)
)DEFAULT CHARSET=utf8;
set character set utf8;
insert into table_name(PName, Remark) values ('test', 'note');
说明:
set character set utf8;:告诉当前会话使用 UTF-8 字符集进行解释和传输。DEFAULT CHARACTER SET utf8:确保新建的数据库默认使用 UTF-8。DEFAULT CHARSET=utf8:确保新建的表默认使用 UTF-8。
完成判断
应用上述任一方法后,重新执行包含中文数据的 SQL 脚本,检查数据库中存储的中文字符是否正常显示,无乱码即表示解决成功。
以上就是MySQL从命令行导入SQL脚本时出现中文乱码的详细内容,更多关于SQL脚本乱码的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









