1.在[mysqld]下添加
目前成都創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、灌云網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)
2.在[client]下添加
default-character-set=utf8
這樣我們建數(shù)據(jù)庫(kù)建表的時(shí)候就不用特別指定utf8的字符集了。配置文件里的這種寫法解決了數(shù)據(jù)存儲(chǔ)和比較的問題
,但是對(duì)客戶端的連接是沒有作用的,客戶端這時(shí)候一般需要指定utf8方式連接才能避免亂碼。也就是傳說總的set
names命令。事實(shí)上,set names utf8命令對(duì)應(yīng)的是服務(wù)器端以下幾個(gè)命令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = xutf8;
但這三個(gè)參數(shù)是不能寫在配置文件my.cnf里的。只能通過set命令來動(dòng)態(tài)修改。我們需要的是在配置文件里寫好一勞
永逸的辦法。那么這時(shí)候,是否有在服務(wù)端解決問題的辦法呢,可行的思路是在init_connect里設(shè)置。這個(gè)命令在每
個(gè)普通用戶連接上來的時(shí)候都會(huì)觸發(fā)執(zhí)行,可以在[mysqld]部分增加以下一行設(shè)置連接字符集:
在[mysqld]下添加:
init_connect = 'SET NAMES utf8'
修改表的默認(rèn)字符集:
ALTER TABLE table_name DEFAULT CHARACTER SET character_name;
修改表字段的默認(rèn)字符集:
ALTER TABLE table_name CHANGE field field field_type CHARACTER SET character_name [other_attribute]
修改表的默認(rèn)字符集和所有列的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET character_name
1、MySQL默認(rèn)的字符集是UTF8;
2、對(duì)于字符集的支持細(xì)化到四個(gè)層次:服務(wù)器(server),數(shù)據(jù)庫(kù)(database),數(shù)據(jù)表(table)和連接(connection)。
3、具體的字符集可以通過修改配置文件(my.cnf)進(jìn)行調(diào)整。
mysql修改編碼,linux/Mac/Unix/通用 修改mysql的編碼需要用到myslq的配置文件,該文件在/etc/my.cnf,mac用戶默認(rèn)是沒有這個(gè)文件的,可以到mysql的安裝目錄/support-files中找任意一個(gè)my-***.cnf拷貝到/ect中,注意復(fù)制過來改名字為my.cnf! 然后: 在[client]下面加default-character-set = utf8 然后在[mysqld]下面加入以下三行: default-storage-engine = INNODB character-set-server = utf8 collation-server = utf8_general_ci 以上能保證程序時(shí)utf_8的編碼,但是可能還是有問題,不能插入中文。 2.查看數(shù)據(jù)庫(kù)的編碼,在workbench中重修改成utf-8-general-ci,可能還是不行。 3.看具體的數(shù)據(jù)表,看varchar()的collection屬性,一般是latin1,把這個(gè)也修改成utf-8-general-ci,完美解決問題。
首先這是我一開始的Ubuntu 下MySQL默認(rèn)字符集(下圖),在Java中輸入中文到數(shù)據(jù)庫(kù)中全是亂碼問號(hào),MySQL不識(shí)別,是因?yàn)镸ySQL默認(rèn)的字符集是latin1(ISO_8859_1)不是utf8的字符集。
修改方法:
1.打開my.cnf文件進(jìn)行修改(這里注意下,MySQL版本是5.5以上的,以下版本應(yīng)該也通用,具體沒有測(cè)試過,但在5.5以上的絕對(duì)可行)
sudo gedit /etc/mysql/my.cnf
2.在[mysqld]下添加如下代碼(對(duì)于5.5以上版本,[mysqld]的default字符集設(shè)置已經(jīng)是遺棄的參數(shù),可以使用這幾個(gè),具體查看相應(yīng)版本的手冊(cè))
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
3.退出重啟mysql服務(wù)
sudo service mysql restart
4.進(jìn)入mysql查看字符集
mysql show variables like 'collation_%';
mysql show variables like 'character_set_%';
但是遺憾的是,很多人編譯安裝MySQL的時(shí)候沒有指定這兩個(gè)參數(shù),大多數(shù)人更是通過二進(jìn)制程序的方式安裝,那
么這時(shí)候MySQL的默認(rèn)字符集是latin1。而這時(shí)候我們?nèi)匀豢梢灾付∕ySQL的默認(rèn)字符集,通過my.cnf文件增加
兩個(gè)參數(shù):
1.在[mysqld]下添加
default-character-set=utf8(mysql 5.5 版本添加character-set-server=utf8)
2.在[client]下添加
default-character-set=utf8
這樣我們建數(shù)據(jù)庫(kù)建表的時(shí)候就不用特別指定utf8的字符集了。配置文件里的這種寫法解決了數(shù)據(jù)存儲(chǔ)和比較的問題
,但是對(duì)客戶端的連接是沒有作用的,客戶端這時(shí)候一般需要指定utf8方式連接才能避免亂碼。也就是傳說總的set
names命令。事實(shí)上,set names utf8命令對(duì)應(yīng)的是服務(wù)器端以下幾個(gè)命令:
SET character_set_client = utf8;
SET character_set_results = utf8;