讓MySQL支持中文

這兩天在學習webpy,把webpy的一個blog例子扒下來學習一下,默認建立的table當存入中文的時候是亂碼,研究了一下這個問題。mysql

 

1,建立table的時候就使用utf8編碼web

舉個例子:sql

1 create table entries2 (
2         id     int auto_increment, 
3         title  text,
4         content  text,
5         posted_on  datetime,
6         primary key (id)   
7 ) character set = utf8;

在每次建立表的時候都在最後加上 ubuntu

  character set = utf8服務器

就能夠很好的支持中文。post

 

 

2,修改已經有的table的編碼學習

當使用默認編碼建立了一個table的時候,是不能支持中文的,這時候使用以下語句對table_name進行修改:測試

alter table table_name convert to character set utf8;

此後再往這個table插入中文的時候,就能夠正常存儲和讀取了,但不知道爲何以前的亂碼仍是不能糾正,只能新插入的數據沒有問題。google

 

[注意]  我google了一下,有些地方說這個命令也行,可是我測試之後並不行  編碼

alter table table_name charset=utf8;   #這個語句並無讓table_name支持中文

 

修改table編碼前:

 

修改成utf8後並插入一行數據:

能夠看到已支持中文,但以前的3行仍是沒有改變。

 

 

3,修改table中一個column的編碼

這個我目前還沒發現須要在實際中使用到,可是測試了不少次,語句以下:

alter table entries modify title mediumtext character set utf8;

其中entries是個人table名,title是我要修改的column字段,mediumtext是title的類型。

即便是修改table某個字段的編碼,也沒有作到讓以前的亂碼變成中文。

 

 

4,如何查看一個database,一個table的編碼

  查看database的編碼,假如database名字爲webpy:

show create database webpy;

查看一個table的編碼,假如table名爲entries2:

show create table entries2;

 效果以下,其實表中每一個字段編碼都是utf8,表的default的utf8的,因此沒有單獨顯示每一個字段的。

 

 

5,修改mysql的配置文件,讓mysql默認編碼爲utf8

在個人ubuntu機器上,mysql的配置目錄爲/etc/mysql

而咱們mysql使用的配置文件爲

  /etc/mysql/my.cnf

咱們能夠直接加在my.cnf中,固然爲了方便移植可複用,也能夠以下寫在獨立的配置文件中。

在my.cnf最後又include了 conf.d/ 下面全部的*.cnf文件,因此咱們就在conf.d/下面加上一個咱們本身的配置文件wy_sql.cnf

 

添加以下兩行

[mysqld]
character-set-server=utf8

 

 再建立表的時候默認編碼就是utf8了。

 

 

 

6,    顯示的問題

上面改了服務器的字符編碼,可是若是不改client的,在終端上顯示的仍是???

還須要在配置文件中加上

[client]
default-character-set=utf8

 

經過

show variables like '%char%'

能夠查看

和編碼  "character" , 有關的變量

 Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |

 

 

7, 直接在mysql中使用 set 設置 變量

上面咱們用show 查看了一些變量的值

那麼能夠直接用set來設置,可是這是臨時的,下次啓動後仍是以配置文件的爲準

set  character_set_result = utf8;
相關文章
相關標籤/搜索