MySQL出现乱码的解决办法

这几天用到MySQL,用的Navicat for MySQL作为界面工具。建了一个数据库,里边有个book表。今天把book导成sql文件,发现其中的插入语句如下:

INSERT INTO `book` VALUES ('BRRN1001', 0x4323B4D3C8EBC3C5B5BDCAB5BCF9, 0xD6A3D2ABB6AB, 0xC7E5BBAAB4F3D1A7B3F6B0E6C9E7, '2009.09', '59.8', '3', 'C#', '工科借阅处', '');
INSERT INTO `book` VALUES ('BRRN1002', 0x4323342E30CDBCBDE2BDCCB3CC, 0xA3A8C3C0A3A944616E69656C204D2E536F6C6973, 0xC8CBC3F1D3CAB5E7B3F6B0E6C9E7, '2011.06', '69', '5', 'C#', '工科借阅处', '');
INSERT INTO `book` VALUES ('BRRN1003', 0x56697375616C204323B3CCD0F2BFAAB7A2B0B8C0FDBDCCB3CC, 0xBAABB3AFD1F4, 0xB1B1BEA9B4F3D1A7B3F6B0E6C9E7, '2009.09', '34.5', '4', 'C#', '工科借阅处', '');

发现书名、作者、出版社居然是十六进制,但是在Navicat for MySQL中显示的是正确的字符串。

之前我是直接从excel表粘贴到book表的,想不到居然会出现这种效果。

此时我才发现,如果我用类似于

INSERT INTO `book` VALUES ('BRRN1001', 'C#从入门到实践', '郑耀东', '清华大学出版社', '2009.09', '59.8', '3', 'C#', '工科借阅处', '');

这样的语句插入数据,在Navicat for MySQL中,书名、作者、出版社这三个字段竟然是乱码!

在网上找了一下解决办法,大部分都是说要修改my.ini,保证字符集的一致性。

显然这些都不是问题所在,要不然“工科借阅处”这几个字怎么没出现乱码呢?

我把book表的数据清空了,再打开book表,发现显示书名、作者、出版社这三个字段的格式是Blob。

大概是因为我建表时,将书名等字段设成varchar(80),太长了,所以MySQL或者Navicat默认给我转成了Blob格式,而Blob格式是用来存储二进制数据的。

总算找到问题所在,修改表,将这三个字段设成mediumtext,就解决问题了!

 

你可能感兴趣的:(mysql,乱码,blob)