解决MySQL生僻字无法显示的问题

发布时间:2020-03-16编辑:脚本学堂
本文介绍下,在mysql数据库中,生僻字无法显示问题的解决方法,有遇到类似问题的朋友可以参考下。

mysql/ target=_blank class=infotextkey>mysql数据库安装时,如果没有手动配置编码,默认选择的应该是gb2312编码,当遇到一些生僻字的时候就会发现不能显示,或显示乱码

1.乱码出现的原因:
由于字符集GB2312只收录了6763个汉字,导致一些生僻字无法正常的显示。

2.确定解决办法:
把字符集由GB2312改为GBK或utf8。但是由于不能丢弃之前的数据,如何修改字符集成了关键。

3.字符集的修改:
a. 先导出表结构
 

复制代码 代码示例:
mysqldump -u root -p --default-character-set=gbk -d 数据库名 > createdb.sql
 

其中参数-d表示只导出表结构,不导出数据。

b. 打开createdb.sql,手工把gb2312替换成utf-8。

c. 导出所有记录
 

复制代码 代码示例:
mysqldump -u root -p --quick --no-create-info --extended-insert --default-character-set=gb2312 数据库名 > data.sql
 

其中参数--no-create-info表示不生成建表语句;--default-character-set=gb2312表示按照原来字符集导出所有数据。

d. 打开data.sql,手工把SET NAME gb2312改成SET NAME gbk或utf8。
注意:如果data.sql很大,可能需要找一些替换工具来完成替换操作,否则可以直接用UltraEdit之类的编辑工具打开修改。

e. 在新的服务器上创建表,导入表的结构,执行createdb.sql。
 

复制代码 代码示例:
mysql -u root -p 数据库名 < createdb.sql

f. 导入数据,执行data.sql
 

复制代码 代码示例:
mysql -u root -p 数据库名 < data.sql

g. 创建数据库用户。
完成了数据库字符集从gb2312到gbk或utf8的修改,接下去可以登录数据库,手工把显示为"?"的乱码字重新更新一下。