关于mysql乱码的一些解决方法
2840 点击·0 回帖
![]() | ![]() | |
![]() | 新建了一个库,默认编码。再导入utf8编码的表和数据。结果全是乱码。改sql文件的编码,还是不行。最后发现竟然是建库的时候没有设置utf8的编码。于是乎有了如下的的记录,问题得以解决。 建库: CREATE DATABASE `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 另记录相关数据库操作: 导入sql文件 mysql -h localhost -u root -p mydbname < data.sql; 导出sql mysqldump -h localhost -u root -p --default-character-set=utf8 mydbname > data.sql; 建表: DROP TABLE IF EXISTS `mytablename`; SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; CREATE TABLE `mytablename` ( `id` int(10) unsigned NOT NULL auto_increment, `int10` int(10) unsigned NOT NULL, `char2` char(2), `varchar100` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; SET character_set_client = @saved_cs_client; 插入数据: LOCK TABLES `mytablename` WRITE; INSERT INTO `mytablename` (`id`,`int10`,`char2`,`varchar100`) VALUES (1,123456,"ab","adsfsadf"); UNLOCK TABLES; 创建用户(设权限,密码) GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY '123456′; GRANT ALL PRIVILEGES ON *.* TO 'user'@'127.0.0.1′ IDENTIFIED BY '123456′; ALL PRIVILEGES 为所有权限,可选:select,insert,update,delete,create,drop等 *.* 表示:某个库.某个表 localhost为只能在本地登录,若为任意地点设为: % 修改密码: mysqladmin -u root -p password 456789 查看所有用户: select host,user from mysql.user; 最后,为了避免乱码的出现应该做到:文件编码+页面编码+数据库编码+应用服务器编码+操作系统编码统一。 | |
![]() | ![]() |