当前位置: 首页 > 图文教程 > 网络编程 > PHP > mysq GBKl乱码

PHP
php zlib压缩和解压缩swf文件的代码
PHP 常用函数库和一些实用小技巧
php 时间计算问题小结
php 禁止页面缓存输出
PHP 地址栏信息的获取代码
据说是雅虎的一份PHP面试题附答案
PHP setcookie() cannot modify header information 的解决方法
Google PR查询接口checksum新算法
php zend 相对路径问题
php mssql 时间格式问题
php str_pad 函数使用详解
php strtotime 函数UNIX时间戳
php array_intersect()函数使用代码
PHP mkdir()定义和用法
php array_flip() 删除数组重复元素
php完全过滤HTML,JS,CSS等标签
php 删除数组元素
PHP $_SERVER详解
php 动态多文件上传
防止MySQL注入或HTML表单滥用的PHP程序

PHP 中的 mysq GBKl乱码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 344 ::
收藏到网摘: n/a

我现在有一个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!
以上是我长时间无数次失败和测试积累下来的经验。