MySQL生僻字无法显示解决方法
第一次采用MySQL作为业务应用的数据库,由于经验不够丰富,在安装数据库的时候选择了GB2312编码。
起先用的也算得心应手,然而后续发现了生僻字不能显示的情况,把我搞得焦头烂额。经过好几天的摸索、
学习,终于把问题解决了。记下解决步骤,与跟我一样的新手分享。
步骤一: 分析出现乱码的原因
由于GB2312字符集只收录了6763个汉字,导致一些生僻字无法正常显示。
步骤二:确定解决方法
把字符集由GB2312改成GBK。但是由于不能丢弃之前的数据,如何修改MySQL的字符集成了关键。
步骤三:字符集的修改
a. 先导出表结构
mysqldump -u root -p --default-character-set=gbk -d 数据库名 > createdb.sql
其中参数-d表示只导出表结构,不导出数据。
b. 打开createdb.sql,手工把gb2312替换成gbk。
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。
注意:如果data.sql很大,可能需要找一些替换工具来完成替换操作,否则可以直接用UltraEdit之类的编辑工具打开修改。
e. 在新的服务器上创建表,执行createdb.sql。
mysql -u root -p 数据库名 < createdb.sql
f. 导入数据,执行data.sql
mysql -u root -p 数据库名 < data.sql
g. 创建数据库用户。
到这儿已经完成了数据库字符集从gb2312到gbk的修改,接下去可以登录数据库,手工把显示为"?"的乱码字重新更新一下。
看看是不是大功告成了!
相关文档:
解决方法一:(最重要的一种方法)
你看下my.ini,有无
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
然后建立表时,也要用(比如)
DROP TABLE IF EXISTS `Company`;
CREATE &nb ......
过滤器条件
mysql.query contains "SELECT"
..
..
..
..
MySQL Protocol
Packet Length: 168
Packet Number: 0
Command
Command: Query (3)
State ......
引言
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。
设计范式是不是很难懂呢?非也 ......
一般建模可能都会用到:powerdesigner
但是,在建表的时候,我一直没有找到:
DEFAULT CHARACTER SET
COLLATE
两个选项。因此,想了个方法,点击:工具栏-》database-》edit current DBMS
然后,选中:MYSQL50::Script\Objects\Table\Options
在options末尾添加:
ENGINE = %s : list = BDB | HEAP | ISAM | InnoDB ......