1,創(chuàng)建table的時(shí)候就使用utf8編碼
創(chuàng)新互聯(lián)為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、成都App制作、微信平臺(tái)小程序開發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
舉個(gè)例子:
在每次創(chuàng)建表的時(shí)候都在最后加上 character set = utf8 就可以很好的支持中文。
2,修改已經(jīng)有的table的編碼
當(dāng)使用默認(rèn)編碼創(chuàng)建了一個(gè)table的時(shí)候,是不能支持中文的,這時(shí)候使用如下語句對(duì)table_name進(jìn)行修改:
此后再往這個(gè)table插入中文的時(shí)候,就可以正常存儲(chǔ)和讀取了,但不知道為什么之前的亂碼還是不能糾正,只能新插入的數(shù)據(jù)沒有問題。
[注意] 我google了一下,有些地方說這個(gè)命令也行,但是我測試以后并不行
alter table table_name charset=utf8; #這個(gè)語句并沒有讓table_name支持中文
一 在安裝數(shù)據(jù)庫時(shí)就設(shè)定字符集編碼為utf8的環(huán)境下
1.當(dāng)前字符集編碼為:
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
下創(chuàng)建數(shù)據(jù)庫
(1)插入中文數(shù)據(jù),操作不能成功
(2)修改字符集編碼為:
Server characterset: utf8
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk
插入中文數(shù)據(jù),顯示正常
二 在安裝數(shù)據(jù)庫時(shí)就設(shè)定字符集編碼為gbk的環(huán)境下
1.當(dāng)前 字符集編碼是:
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
下創(chuàng)建數(shù)據(jù)
插入中文數(shù)據(jù),操作正常,顯示正常
2.當(dāng)前字符集編碼為utf8
Server characterset: gbk
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
3.當(dāng)前字符集編碼為utf8
Server characterset: gbk
Db characterset: gbk
Client characterset: utf8
Conn. characterset: utf8
插入中文數(shù)據(jù),操作不能執(zhí)行
結(jié)論:要想能向數(shù)據(jù)庫正常插入中文,必須滿足以下條件:
1.要把字符集設(shè)定為能支持中文的gbk或則utf8;
2.把數(shù)據(jù)庫的Client Characterset和Conn. Characterset的字符集都設(shè)定為gbk;
MySQL 中何存中文方法如下:
1、create table的時(shí)候加上:ENGINE=InnoDB DEFAULT CHARSET=gbk;
例如:
CREATE TABLE t_department (
sid varchar(32) NOT NULL,
pid varchar(32) NOT NULL,
thedata varchar(50) NOT NULL
ENGINE=InnoDB DEFAULT CHARSET=gbk;
2、打開MySQL目錄下的my.ini文件,把里面所有的default-character-set選項(xiàng)設(shè)為GBK或者GB2312,保存后重啟MySQL。
3、mysql數(shù)據(jù)庫安裝的時(shí)候。選擇語言為gbk,這樣在數(shù)據(jù)庫中才可以存放中文。
A. 字符編碼:
使用命令行方式登陸到MySQL服務(wù)器, 建立一個(gè)數(shù)據(jù)庫,數(shù)據(jù)庫編碼設(shè)為UTF-8。此時(shí),如果直接在命令行窗口使用insert語句插入中文,就遇到類似 ERROR 1406 (22001): Data too long for column 'name' at row 1 錯(cuò)誤。乍一看,是字段長度引起的問題,但是實(shí)際是字符編碼的問題。可是嘗試以下解決方法:
1、在Linux中,使用終端方式登陸MySQL服務(wù)器,運(yùn)行以下命令:
set names utf8;
該命令將終端的字符編碼設(shè)為了UTF-8。此后再插入數(shù)據(jù)庫中的內(nèi)容都會(huì)按照UTF-8的編碼來處理。
注意:在Linux中,終端方式中直接插入中文內(nèi)容,可能并不會(huì)出現(xiàn)1406錯(cuò)誤,但是這時(shí)插入的數(shù)據(jù)
是按照系統(tǒng)的默認(rèn)編碼進(jìn)行處理。因此對(duì)編碼為UTF-8的數(shù)據(jù)庫,在顯示數(shù)據(jù)的地方可能會(huì)出現(xiàn)亂碼。
2、在Windows下,命令行窗口不支持UTF-8編碼,所以使用“set names utf8;”不會(huì)達(dá)到轉(zhuǎn)化中文的
效果。但是這個(gè)問題還是可以解決的:
(1)使用默認(rèn)編碼建立數(shù)據(jù)庫。這種情況下就可以直接輸入中文了,但是相應(yīng)的問題,就是會(huì)
失去UTF-8編碼的靈活性。特別是不利于軟件的國際化。
(2)放棄命令行窗口登錄MySQL,使用圖形化客戶端??蛻舳斯ぞ呖梢訫ySQL的官方網(wǎng)站上找到。
B. Mysql配置文件:
“在my.ini里找到sql- mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'把其中 的STRICT_TRANS_TABLES,去掉,或者把sql- mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION注釋掉,然 后重啟mysql就ok了
1. 安裝mysql的時(shí)候,會(huì)選擇默認(rèn)的字符集,請(qǐng)選擇utf-8,因?yàn)閡tf-8才是王道. 2. 如果你不想改字符集,那么建議你把數(shù)據(jù)表的字符集改為utf-8或者是gbk,建議utf-8. 3. 如果你不介意數(shù)據(jù)庫亂碼,在取出數(shù)據(jù)的時(shí)候你可以加上 mysql_query("set names gbk")這樣就可以將亂碼的中文正確顯示. 4. 要避免亂碼,你一定要保證字符集的一致性.從你的數(shù)據(jù)庫,數(shù)據(jù)表,以及你輸出的頁面.盡量使用utf-8. 如果還沒有解決你的問題,你可以自己搜索解決 關(guān)鍵字 mysql 字符集 或者是 mysql 亂碼. 很多答案.
首先你要保證你的mysql編碼,和mysqlclient編碼 都是utf8
在你的
my.cnf
里面就可以設(shè)置的。
默認(rèn)的mysql編碼居然是瑞典碼,很是蹩腳。