MySQL是一個開源的關系型數據庫管理系統,在運用過程中你可能遇到了查出來的大字段亂碼的情況。出現這種情況的原因可能有很多,接下來我們就使用代碼示例來說明即可,下面的MySQL版本為5.7.28:
CREATE DATABASE `test`; ## 創建一個名為test的數據庫 USE `test`; CREATE TABLE `user` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `name` varchar(64) DEFAULT NULL COMMENT '姓名', `content` longblob DEFAULT NULL COMMENT '內容', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用戶表'; INSERT INTO `user`(`name`, `content`) VALUES("張三", "我是一個文章,可能會很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長"); ## 查看數據,會發現內容已經變成亂碼 SELECT * FROM `user`; ## 查看表的字符集 SHOW CREATE TABLE `user`; ## 修改表的字符集為utf8 ALTER TABLE `user` CONVERT TO CHARACTER SET utf8; ## 修改數據內容 UPDATE `user` SET `content` = "我是一個文章,可能會很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長" WHERE `id` = 1; ## 再次查看,就可以正確顯示內容了 SELECT * FROM `user`;
通過以上代碼示例可以看出,在默認情況下,MySQL表的字符集可能是utf8mb4,而在查詢時使用的字符集可能是utf8,就會導致出現亂碼的情況。解決方法就是統一字符集,可以通過修改表的字符集或者查詢時指定字符集來解決。