如何修改mysql表中數(shù)據(jù)字符集
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、高青ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的高青網(wǎng)站制作公司
1. 修改my.ini配置文件(MySQL配置文件)
character_set_server = utf8 #設(shè)置字符集
2. 修改數(shù)據(jù)庫(kù)字符集
alter database 數(shù)據(jù)庫(kù)名 character set utf8;
3. 重啟mysql數(shù)據(jù)庫(kù)
mysql如何更改數(shù)據(jù)庫(kù)字符編碼?借助客戶端工具很容易就可以更改了,下面來(lái)看一下。
01
打開(kāi)navicat客戶端工具,在左邊找到要更改的數(shù)據(jù)庫(kù)。
02
右鍵點(diǎn)擊這個(gè)數(shù)據(jù)庫(kù),在菜單上點(diǎn)擊數(shù)據(jù)庫(kù)屬性選項(xiàng)。
03
在彈出的屬性窗口上,點(diǎn)擊默認(rèn)字符集下的下拉框。
04
在彈出的下拉選項(xiàng)里,點(diǎn)擊選中要使用的字符集就行了,比如選擇常用的utf8字符集,點(diǎn)擊ok按鈕就行了。
修改mysql的默認(rèn)字符集是通過(guò)修改它的配置文件來(lái)實(shí)現(xiàn)的。一般分兩種情況:
windows平臺(tái)
windows下的mysql配置文件是my.ini,一般在c:windowsmy.ini或者c:winntmy.ini可以直接在這個(gè)文件里面加上
default-character-set=gbk
#或gb2312,big5,utf8
然后重新啟動(dòng)mysql
service
mysql
restart
或
/etc/init.d/mysql
restart
或用其他方法重新啟動(dòng),就生效了。
unix平臺(tái)
linux下的mysql配置文件是my.cnf,一般是/etc/my.cnf,如果找不到可以用find命令找一下:
find
/
-iname
my.cnf
在這個(gè)文件里面加上
default-character-set=gbk
#或gb2312,big5,utf8
然后重新啟動(dòng)mysql
net
stop
mysql
net
start
mysql
就生效了。
首先,MySQL的字符集問(wèn)題主要是兩個(gè)概念,一個(gè)是Character Sets,一個(gè)是Collations,前者是字符內(nèi)容
及編碼,后者是對(duì)前者進(jìn)行比較操作的一些規(guī)則。這兩個(gè)參數(shù)集可以在數(shù)據(jù)庫(kù)實(shí)例、單個(gè)數(shù)據(jù)庫(kù)、表、列等四個(gè)級(jí)
別指定。
對(duì)于使用者來(lái)說(shuō),一般推薦使用utf8編碼來(lái)存儲(chǔ)數(shù)據(jù)。而要解決亂碼問(wèn)題,不單單是MySQL數(shù)據(jù)的存儲(chǔ)問(wèn)題,還
和用戶的程序文件的編碼方式、用戶程序和MySQL數(shù)據(jù)庫(kù)的連接方式都有關(guān)系。
首先,MySQL有默認(rèn)的字符集,這個(gè)是安裝的時(shí)候確定的,在編譯MySQL的時(shí)候可以通過(guò)DEFAULT_CHARSET=
utf8和DEFAULT_COLLATION=utf8_general_ci這兩個(gè)參數(shù)(MySQL5.5版本,5.1版本用--with-charset=
utf8 --with-collation=utf8_general_ci)來(lái)指定默認(rèn)的字符集為utf8,這也是最一勞永逸的辦法,這樣指定后,
客戶端連接到數(shù)據(jù)庫(kù)的編碼方式也默認(rèn)是utf8了,應(yīng)用程序不需要任何處理。
但是遺憾的是,很多人編譯安裝MySQL的時(shí)候沒(méi)有指定這兩個(gè)參數(shù),大多數(shù)人更是通過(guò)二進(jìn)制程序的方式安裝,那
么這時(shí)候MySQL的默認(rèn)字符集是latin1。而這時(shí)候我們?nèi)匀豢梢灾付∕ySQL的默認(rèn)字符集,通過(guò)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的字符集了。配置文件里的這種寫(xiě)法解決了數(shù)據(jù)存儲(chǔ)和比較的問(wèn)題
,但是對(duì)客戶端的連接是沒(méi)有作用的,客戶端這時(shí)候一般需要指定utf8方式連接才能避免亂碼。也就是傳說(shuō)總的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ù)是不能寫(xiě)在配置文件my.cnf里的。只能通過(guò)set命令來(lái)動(dòng)態(tài)修改。我們需要的是在配置文件里寫(xiě)好一勞
永逸的辦法。那么這時(shí)候,是否有在服務(wù)端解決問(wèn)題的辦法呢,可行的思路是在init_connect里設(shè)置。這個(gè)命令在每
個(gè)普通用戶連接上來(lái)的時(shí)候都會(huì)觸發(fā)執(zhí)行,可以在[mysqld]部分增加以下一行設(shè)置連接字符集:
在[mysqld]下添加:
init_connect = 'SET NAMES utf8'
總結(jié):
1、首選在編譯安裝MySQL的時(shí)候指定兩個(gè)參數(shù)使用utf8編碼。
2、次選在配置文件my.cnf或my.ini設(shè)定兩個(gè)參數(shù),同時(shí)設(shè)置init_connect參數(shù)。
3、第三在配置文件my.cnf或my.ini設(shè)定兩個(gè)參數(shù),同時(shí)客戶端的連接指定set names命令。
4、在配置文件my.cnf里的client和server處加入default-character-set參數(shù)方便管理。
復(fù)制代碼
1 -------客戶端----
2 [client]
3 no-beep
4
5 # pipe
6 # socket=mysql
7 port=3306
8
9 [mysql]
10
11 default-character-set=gb2312
12
13 -----服務(wù)器----
14
15 # The default character set that will be used when a new schema or table is
16 # created and no character set is defined
17 character-set-server=gb2312
復(fù)制代碼
1,service mysqld stop,停用mysql。
2.cp /etc/my.cnf /etc/my.cnf.bak,修改前做備份,這是個(gè)好習(xí)慣。
修改my.cnf或my.ini(只有修改配置文件,并重啟服務(wù)器,才能永久生效)
vi /etc/my.cnf
在[client]下添加,client為控制客戶端的,沒(méi)試過(guò),沒(méi)有的可以不需要加。
default-character-set=utf8
在[mysqld]下添加,mysqld為控制服務(wù)器端的,改過(guò)了,OK。
default-character-set=utf8
3.service mysqld restart,重啟。
4.show variables like '%char%';查看。
以下為網(wǎng)絡(luò)轉(zhuǎn)載,比較全。
//////////////////////////////////////////
查看mysql字符集MySQL 亂碼的根源是的 MySQL 字符
ubuntu 10.04 mySql 啟動(dòng),停止,重啟
啟動(dòng):sudo /etc/init.d/mysql start
停止:sudo /etc/init.d/mysql stop
重啟:sudo /etc/init.d/mysql restart
注意:從windows下拷貝過(guò)來(lái)的文件在linux下不能直接加入數(shù)據(jù)庫(kù),因?yàn)樽址灰粯樱@樣打開(kāi)即使顯示是中文也不能在數(shù)據(jù)庫(kù)中顯示,要把文件拷貝進(jìn)linux的另一個(gè)文件中轉(zhuǎn)換字符才可以。
MySQL 亂碼的根源是的 MySQL 字符集設(shè)置不當(dāng)?shù)膯?wèn)題,本文匯總了有關(guān)查看 MySQL 字符集的命令。包括查看 MySQL 數(shù)據(jù)庫(kù)服務(wù)器字符集、查看 MySQL 數(shù)據(jù)庫(kù)字符集,以及數(shù)據(jù)表和字段的字符集、當(dāng)前安裝的 MySQL 所支持的字符集等。
一、查看 MySQL 數(shù)據(jù)庫(kù)服務(wù)器和數(shù)據(jù)庫(kù)字符集。
mysql show variables like '%char%';
二、查看 MySQL 數(shù)據(jù)表(table) 的字符集。
mysql show table status from sqlstudy_db like '%countries%';
三、查看 MySQL 數(shù)據(jù)列(column)的字符集。
mysql show full columns from countries;
四、查看當(dāng)前安裝的 MySQL 所支持的字符集。
mysql show charset;
mysql show char set;
以上查看 MySQL 字符集命令,適用于 Windows Linux。
1.查找MySQL的cnf文件的位置
find / -iname '*.cnf' -print
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/texmf/web2c/texmf.cnf
/usr/share/texmf/web2c/mktex.cnf
/usr/share/texmf/web2c/fmtutil.cnf
/usr/share/texmf/tex/xmltex/xmltexfmtutil.cnf
/usr/share/texmf/tex/jadetex/jadefmtutil.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-innodb-heavy-4G.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-large.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-small.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-medium.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-huge.cnf
2. 拷貝 small.cnf、my-medium.cnf、my-huge.cnf、my-innodb-heavy-4G.cnf其中的一個(gè)到/etc下,命名為my.cnf
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
3. 修改my.cnf 或my.ini(5.6版本)
vi /etc/my.cnf
在[client]下添加
default-character-set=utf8
在[mysqld]下添加
default-character-set=utf8
4.重新啟動(dòng)MySQL
[root@bogon ~]# /etc/rc.d/init.d/mysql restart
Shutting down MySQL [ 確定 ]
Starting MySQL. [ 確定 ]
[root@bogon ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.22-rc-community-log MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
其他的一些設(shè)置方法:
通過(guò)配置文件修改:
修改/var/lib/mysql/mydb/db.opt
default-character-set=latin1
default-collation=latin1_swedish_ci
為
default-character-set=utf8
default-collation=utf8_general_ci
重起MySQL:
[root@bogon ~]# /etc/rc.d/init.d/mysql restart