解决mysql4.0.17导出乱码问题
我将mysql4.0.17中的数据进行备份,导出的中文数据为乱码,由于重装系统原来的数据库删除了,就留下了备份的数据库文件,重新安装mysql4.0.17后进数据倒入数据库,访问jsp页面时中文都是乱码。jsp页面编码是gb2312,数据库编码是默认的。下面是部分的备份数据库:
-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 4.0.17-nt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE= 'NO_AUTO_VALUE_ON_ZERO ' */;
DROP TABLE IF EXISTS `myroad_branch`;
CREATE TABLE `myroad_branch` (
`id` bigint(20) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default ' ',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) TYPE=InnoDB;
--
-- Dumping data for table `myroad`.`myroad_branch`
--
/*!40000 ALTER TABLE `myroad_branch` DISABLE KEYS */;
INSERT INTO `myroad_branch` (`id`,`name`) VALUES
(1, 'ÊÐÕþÉè¼ÆÒ»´¦ '),
(2, 'ÊÐÕþÉè¼Æ¶þ´¦ '),
(8, 'ÑÒÍÁÊÒ '),
(4, '°ì¹«ÊÒ '),
(5, '²ÆÎñÊÒ '),
(3, '¹«Â·Éè¼Æ´¦ '),
(9, '¾­Óª´¦ '),
(6, '¾­¼ÃÊÒ '),
(7, '×ܹ¤°ì ');
/*!40000 ALTER TABLE `myroad_branch` ENABLE KEYS */;
------解决方案--------------------MySQL默认编码是latin1。。。
你在运行SQL语句前先执行
set names gb2312
------解决方案--------------------系统的默认值是latin1的瑞典语排序方式
当按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。
解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8 ';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
在查询前加一行:
mysql_query( "SET NAMES 'gb2312 '; ",$this-> con);
------解决方案--------------------mark