我将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 */;

解决方案 »

  1.   

    MySQL默认编码是latin1你在运行SQL语句前先执行set names gb2312
      

  2.   

    系统的默认值是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);