程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> mysq GBKl亂碼

mysq GBKl亂碼

編輯:關於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!

以上是我長時間無數次失敗和測試積累下來的經驗。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved