程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 徹底解決mysql中文亂碼的辦法,修改mysql解壓縮版(免安裝版或zip版)字符編碼

徹底解決mysql中文亂碼的辦法,修改mysql解壓縮版(免安裝版或zip版)字符編碼

編輯:MySQL綜合教程

徹底解決mysql中文亂碼的辦法,修改mysql解壓縮版(免安裝版或zip版)字符編碼


MySQL會出現中文亂碼的原因不外乎下列幾點:   1.server本身設定問題,例如server字符編碼還停留在latin1   2.table的語系設定問題(包含character與collation)   3.客戶端程式(例如php)的連線語系設定問題   強烈建議使用utf8!!!!   utf8可以兼容世界上所有字符!!!!   -----------------------------------------------------------------------------------------------------------------   一、windows下Mysql插入中文顯示亂碼解決方案:對於mysql解壓縮版(免安裝版或zip版)進行設置字符編碼   1、   當我們把zip文件格式解壓到指定目錄後,並且完成基本環境配置後,打開mysql 5.6.24會發現名為【my-default.ini】的文件。我們用記事本打開該文件會發現並沒有【default-character-set = xxx】或者【character_set_server=xxx】,怎麼回事呢?網上給出的許多方法都是直接修改這句話的xxx為utf8,不急,下面請看第二步:   2、   復制該文件,並且命名為【my.ini】,這樣根目錄下就有兩個.ini文件了,一個是my-default.ini,一個是my.ini 。接下來我們只需修改my.ini裡面的內容就行了。請看第三步:   3、   修改【my.ini】,   在[mysqld]下面添加 character_set_server=utf8,注意是【utf8】不是【utf-8】而且後面沒有任何標點符號;   在【sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES】這句話後面再添加三行:   [client] port=3306 default-character-set=utf8   4、   經過以上三步就ok了。保存後重啟服務器,登陸後在命令行輸入:【show variables like 'char%';】可查看默認字符集如下圖所示: 5、   我的【my.ini】代碼,紅色代碼區為修改之處:   # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the # *** default location during install, and will be replaced if you # *** upgrade to a newer version of MySQL.   [mysqld]   # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M   # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin   # These are commonly set, remove the # and set as required. basedir = D:\mysql-5.6.24-winx64 datadir = D:\mysql-5.6.24-winx64\data port = 3306 # server_id = ..... character_set_server=utf8   # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M   sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES   [client] port=3306 default-character-set=utf8   二、LInux下Mysql插入中文顯示亂碼解決方案   mysql -uroot -p 回車輸入密碼   進入mysql查看狀態如下: mysql不能插入中文   默認的是客戶端和服務器都用了latin1,所以會亂碼。   解決方案:直接修改默認的Mysql配置文件徹底解決mysql無法插入中文和中文亂碼的辦法   一、進入mysql(mysql -uroot -p),查看當前數據庫字符集(status;)   二、查看當前系統版本(lsb_release -a) Mysql不能插入中文   三、#vim /etc/mysql/my.cnf 。(5.5以前系統)在【client】下面加入 default-character-set=utf8   在【mysqld】下面加入default-character-set=utf8   Notice:注意 如果修改後不能啟動報錯試試把default-character-set=utf8改為character_set_server=utf8,僅僅加入到mysqld下面的.client就不需要加了   四、#vim /etc/mysql/my.cnf 。(5.5以後系統)如下修改:   [client] default-character-set=utf8   [mysqld] default-storage-engine=INNODB character-set-server=utf8 collation-server=utf8_general_ci   五、重啟mysql(/etc/init.d/mysql stop   /etc/init.d/mysql  start)   六、修成成功,進入mysql查看字符集(mysql>show variables like ‘character_set_%’;) Mysql無法插入中文   三、避免創建數據庫及表出現中文亂碼和查看編碼方法   1、創建數據庫的時候:CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';      2、建表的時候 CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default '', `UserID` varchar(40) NOT NULL default '', ) ENGINE=InnoDB DEFAULT CHARSET=utf8;   這3個設置好了,基本就不會出問題了,即建庫和建表時都使用相同的編碼格式。   但是如果你已經建了庫和表可以通過以下方式進行查詢。   1.查看默認的編碼格式: mysql> show variables like "%char%"; +--------------------------+---------------+ | Variable_name | Value | +--------------------------+---------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+-------------+   注:以前2個來確定,可以使用set names utf8,set names gbk設置默認的編碼格式;   執行SET NAMES utf8的效果等同於同時設定如下: SET character_set_client='utf8'; SET character_set_connection='utf8'; SET character_set_results='utf8';   2.查看test數據庫的編碼格式: mysql> show create database test; +------------+------------------------------------------------------------------------------------------------+ | Database | Create Database | +------------+------------------------------------------------------------------------------------------------+ | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ | +------------+------------------------------------------------------------------------------------------------+   3.查看yjdb數據庫的編碼格式: mysql> show create table yjdb; | yjdb | CREATE TABLE `yjdb` ( `sn` int(5) NOT NULL AUTO_INCREMENT, `type` varchar(10) NOT NULL, `brc` varchar(6) NOT NULL, `teller` int(6) NOT NULL, `telname` varchar(10) NOT NULL, `date` int(10) NOT NULL, `count` int(6) NOT NULL, `back` int(10) NOT NULL, PRIMARY KEY (`sn`), UNIQUE KEY `sn` (`sn`), UNIQUE KEY `sn_2` (`sn`) ) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |   四、避免導入數據有中文亂碼的問題   1:將數據編碼格式保存為utf-8   設置默認編碼為utf8: set names utf8;   設置數據庫db_name默認為utf8: ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;   設置表tb_name默認編碼為utf8: ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;   導入: LOAD DATA LOCAL INFILE 'C:\\utf8.txt' INTO TABLE yjdb;   2:將數據編碼格式保存為ansi(即GBK或GB2312)   設置默認編碼為gbk: set names gbk;   設置數據庫db_name默認編碼為gbk: ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;   設置表tb_name默認編碼為gbk: ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;   導入: LOAD DATA LOCAL INFILE 'C:\\gbk.txt' INTO TABLE yjdb;   注:1.UTF8不要導入gbk,gbk不要導入UTF8; 2.dos下不支持UTF8的顯示;   五、解決網頁中亂碼的問題   將網站編碼設為 utf-8,這樣可以兼容世界上所有字符。   如果網站已經運作了好久,已有很多舊數據,不能再更改簡體中文的設定,那麼建議將頁面的編碼設為 GBK, GBK與GB2312的區別就在於:GBK能比GB2312顯示更多的字符,要顯示簡體碼的繁體字,就只能用GBK。   1.編輯/etc/my.cnf ,在[mysql]段加入default_character_set=utf8;   2.在編寫Connection URL時,加上?useUnicode=true&characterEncoding=utf-8參;   3.在網頁代碼中加上一個"set names utf8"或者"set names gbk"的指令,告訴MySQL連線內容都要使用 utf8或者gbk;

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