日期:2014-05-16  浏览次数:20681 次

解决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