mysq GBKl乱码

yipeiwu_com6年前PHP代码库
我现在有一个sql文件,里面内容是gbk的。我现在显示全是乱码。
就只是用mysql 4.0.26能显示。
用4.1以上的死活都显示不了。头大了。望大家指点指点,感恩不尽。
我现在装了mysql 5.0.22.
我把my.ini里的字符集都改成 gbk了,用status命令显示,都是 gbk.然后我用source 命令导入sql文件,可是还不行。查询前我用了set names gbk,set names utf8,set names latin1.什么都显示乱码。 
用mysql -uroot -ppassword database<data.sql导入也一样不行。
sql文件头是这样的。
-- MySQL dump 10.10
--
-- Host: localhost    Database: system
-- ------------------------------------------------------
-- Server version        5.0.22-community-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 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!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' */;
/*

无语了。望各位指点。谢谢。
复制代码 代码如下:

完美解决方案:
1. 不管你用什么方法,导出SQL文本文件,确保EDITPLUS打开看到的是中文。
2. 将该SQL文件的语句改成4.1的,删除编码设定的语句,然后保存。
3. 用命令行导入4.1数据库,记得,这个数据库的编码要设为GBK,建表的时候,会自动指定为GBK

附命令:
mysql -hlocalhost -uroot -p**** database --default-character-set=gbk < database.sql

以后导出的时候,也要记得--default-character-set=gbk 

写程序的时候,mysql询前,一定要SET NAMES!

以上是我长时间无数次失败和测试积累下来的经验。

相关文章

如何用php获取程序执行的时间

在head.htm中加入,也就是在默认模版中添加“$stime=microtime(true); //获取程序开始执行的时间”复制代码 代码如下:<!--<?php$stim...

PHP fclose函数用法总结

php fclose()函数 语法 作用:关闭一个打开文件 语法: fclose(file) 参数: file 必需。规定要关闭的文件。 说明:如果成功则返回 true,否则返回...

PHP之将POST数据转化为字符串的实现代码

主要用途就是记录POST过来的参数; 以下函数主要原理还是应用递归方式,将多维数组转化为一维数组进行,最后进行数组转字符串处理既可拿到POST过来的数据字符串化; 核心代码: /**...

PHP 巧用数组降低程序的时间复杂度

关于作者 王丹丹 , IBM 中国系统与技术中心软件工程师,自从 2006 年加入 IBM,一直从事 Web 系统设计和开发工作,有五年 PHP 应用程序设计开发经验。 通常开发人员在写...

PHP伪造referer实例代码

这里就直接给出完整的程序吧,具体的应用可以自己修改。 我这里给出的例子是很简单的,其实可以从这个例子中发展出很多的应用。比如隐藏真实的URL地址……嘿嘿,具体的就自己分析去吧 这里新建一...