青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

mysql字符集調整的個人總結

sql4.1以后版本都支持多字符集的支持,但是安裝默認的字符集竟然是 latin1這個瑞典文,所以很多人想安裝discuz等論壇為gbkutf-8等字符集的論壇就出現了一些問題。最近我在網上找了一些資料,加上自己又專門在一臺linux服務器上試驗了兩天的經歷,基本解決了字符集的問題,現將我的心得寫出來,供廣大網游參考。

    
一、原理篇:
           
             mysql
服務器中有六個關鍵位置使用了字符集的概念,他們是:client connectiondatabaseresultsserver system

             a
、其中client是客戶端使用的字符集,相當于網頁中的字符集設置如下

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
       b
、其中的connection是連接數據庫的字符集設置類型,如果php沒有指明連接數據庫使用的字符集類型
就按照服務器端默認的字符集設置。
       c
、其中database是數據庫服務器中某個庫使用的字符集設定,如果建庫時沒有指明,將使用服務器安裝
時指定的字符集設置。
       d
results是數據庫給客戶端返回時使用的字符集設定,如果沒有指明,使用服務器默認的字符集。
       e
server是服務器安裝時指定的默認字符集設定。
       f
system是數據庫系統使用的字符集設定。
     
      system
一般默認是utf-8字符集,server是最高的字符集設定,database沒有單獨設定就按照server的字符
集設定,其他都是按照server的設定設置字符集。還有,數據庫內的每個表和字段也都有字符集的概念,一般都
是根據上一級結構決定自身的字符集,比如表就根據database庫的設定決定自己的字符集,字段根據表來決定自己
的字符集。

  
二、統一字符集的方法:(以utf-8字符集為例,因為他是目前支持文字種類最廣的字符集)

      1
、徹底解決字符集的方法:

      
要徹底解決字符集的方法就是讓mysql在安裝的時候就是用utf-8的字符集設定,這樣可以使上面的六個關鍵
點的編碼都為utf-8

      a
、 在windows下安裝mysql有提示可以選擇字符集,我們選擇utf-8就可以了。

      b
、在linux下有三種安裝方法,第一種是rpm包安裝,這種因為我沒有使用過所以沒有發言權。

        
第二種為可執行程序安裝,這種安裝因為已經被編譯成了latin1這種瑞典語的字符集,所以無法完全解決字
符集問題,這個版本我們后面會講到怎么解決字符集問題。
        
第三種為源碼自行編譯安裝,這種安裝可以在編譯時設置字符集類型,這部分主要講這種安裝方式。

       
在編譯mysql是我們可以用這樣的指令:./configure --default-character-set=utf8
這樣,在編譯的時候,就會把mysqlserver項編譯成utf8的編碼,這樣這個mysql下建立的所有數據庫都將使用utf8
編碼存儲,所有有關的方面都是utf8編碼。


      2
、局部堅決字符集的方法:
 
       
如果遇到自己的數據庫使用的是默認安裝的latin1字符集的(很奇怪為什么mysql要使用這么個默認字符集)
的情況我們可以這樣來解決。

       a
、默認請況下我們在mysql命令行使用status指令察看狀態,可以看到如下內容:

        mysql> status
--------------
mysql  Ver 14.7 Distrib 4.1.9, for pc-linux-gnu (i686)

Connection id:          62
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.11-beta-log
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /tmp/mysql.sock
Uptime:                 58 min 23 sec

Threads: 2  Questions: 1067  Slow queries: 0  Opens: 0  Flush tables: 1  Open tables: 75  Queries per second avg: 0.305
--------------

        
還可以用SHOW VARIABLES LIKE 'character_set_%';指令察看內容如下:

+--------------------------+---------------------------------------------------------------------------+
| Variable_name            | Value                                                                     |
+--------------------------+---------------------------------------------------------------------------+
| character_set_client     | latin1                                                                    |
| character_set_connection | latin1                                                                    |
| character_set_database   | latin1                                                                    |
| character_set_filesystem | binary                                                                    |
| character_set_results    | latin1                                                                    |
| character_set_server     | latin1                                                                    |
| character_set_system     | utf8                                                                      |
| character_sets_dir       | /usr/local/src/mysql-5.1.11-beta-linux-i686-glibc23/share/mysql/charsets/ |
+--------------------------+---------------------------------------------------------------------------+
8 rows in set (0.00 sec)

         
這就說明,除systemutf8之外的所有內容的字符集都為latin1,我們怎么樣才能使用utf字符集呢?
有人說可以在my.cnf文件的[mysqld]段中加入default-character-set=utf8這一項就可以解決,但經過我的實驗,這一條
完全沒有必要,以下是增加了這一項后得顯示結果。

mysql> status;
--------------
mysql  Ver 14.7 Distrib 4.1.9, for pc-linux-gnu (i686)

Connection id:          62
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.1.11-beta-log
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    latin1
UNIX socket:            /tmp/mysql.sock
Uptime:                 1 hour 6 min 18 sec

Threads: 2  Questions: 1071  Slow queries: 0  Opens: 0  Flush tables: 1  Open tables: 75  Queries per second avg: 0.269
--------------

mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+---------------------------------------------------------------------------+
| Variable_name            | Value                                                                     |
+--------------------------+---------------------------------------------------------------------------+
| character_set_client     | latin1                                                                    |
| character_set_connection | latin1                                                                    |
| character_set_database   | utf8                                                                      |
| character_set_filesystem | binary                                                                    |
| character_set_results    | latin1                                                                    |
| character_set_server     | utf8                                                                      |
| character_set_system     | utf8                                                                      |
| character_sets_dir       | /usr/local/src/mysql-5.1.11-beta-linux-i686-glibc23/share/mysql/charsets/ |
+--------------------------+---------------------------------------------------------------------------+
8 rows in set (0.00 sec)


mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database   | utf8_general_ci   |
| collation_server     | utf8_general_ci   |
+----------------------+-------------------+
3 rows in set (0.01 sec)


      
從上面可以看出,使用了配置文件中修改默認字符集的方法,并沒有把clientconnection
results
這三項改成utf8,而且在建數據庫的時候我們可以通過這樣的指令實現數據庫的字符集設置:

CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

      
這樣此數據庫內的所有表和字段都將為utf8字符集編碼,所以在配置文件中修改的方法也就失去了意義。

    
     b
、我的解決辦法。

     
我們可以完全無視數據庫默認的字符集是什么,我們關心的只有數據庫在建立的時候是不是加入了字符集
選擇。

      (1)
使用如下指令建立數據庫:
       
     
     CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

      (2)
客戶端php程序使用如下方法設定連接所使用的字符集: 
      PHP
程序在查詢數據庫之前,執行mysql_query("set names utf8;");

     
例子:

1.    <?php

2.    mysql_connect('localhost','user','password');

3.    mysql_select_db('my_db');

4.     

5.    //請注意,這步很關鍵,如果沒有這步,所有的數據讀寫都會不正確的

6.    //它的作用是設置本次數據庫聯接過程中,數據傳輸的默認字符集

7.    mysql_query("set names utf8;");

8.     

9.    //必須將gb2312(本地編碼)轉換成utf-8,也可以使用iconv()函數

10.  mysql_query(mb_convet_encoding("insert into my_table values('測試');", "utf-8", "gb2312"));

11.  ?>

     (3)如果你想使用gb2312編碼,那么建議你使用latin1作為數據表的默認字符集,這樣就能直接用中
文在命令行工具中插入數據,并且可以直接顯示出來.而不要使用gb2312或者gbk等字符集,如果擔心查詢
排序等問題,可以使用binary屬性約束,例如:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;

   自此,使用utf8字符集的完整的例子結束了。

    
三、舊數據升級辦法

    (1) 導出數據庫:

mysqldump -uroot -p123456 --default-character-set=latin1 --set-charset=utf8 --opt olddatabase > newdatabase.sql

    (2)
修改newdatabase.sql,在文件開頭增加一條sql語句:SET NAMES utf8;,保存。

    (3)mysql -hlocalhost -uroot my_db < newdatabase.sql

 

posted on 2009-08-14 17:14 肥仔 閱讀(701) 評論(0)  編輯 收藏 引用 所屬分類: 數據庫

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲免费成人av| 久久午夜av| 亚洲国产欧美在线| 亚洲第一中文字幕| 久久五月婷婷丁香社区| 亚洲综合精品一区二区| 国产精品igao视频网网址不卡日韩 | 久久综合成人精品亚洲另类欧美| 亚洲一区二区三区精品在线观看 | 国产一区二区三区久久悠悠色av | 狠狠狠色丁香婷婷综合激情| 在线精品福利| 中文国产成人精品| 久久久免费av| 日韩亚洲不卡在线| 久久久久国产精品人| 欧美日韩中国免费专区在线看| 国产精品―色哟哟| 亚洲三级电影在线观看| 亚洲网站在线观看| 久久成人国产精品| 亚洲国产成人久久综合| 亚洲电影免费观看高清完整版在线观看| 亚洲精品久久久久久下一站| 亚洲欧美日韩国产中文在线| 免费永久网站黄欧美| 国产精品日韩一区二区| 亚洲精品资源美女情侣酒店| 欧美中文字幕| 99re在线精品| 免费在线成人av| 国产在线日韩| 亚洲永久在线观看| 亚洲精品1234| 久久综合精品国产一区二区三区| 国产精品实拍| 一本久道久久综合中文字幕| 免费亚洲电影在线| 香蕉久久夜色精品| 国产精品国产三级国产| 99精品国产一区二区青青牛奶 | 亚洲剧情一区二区| 久久亚洲综合色一区二区三区| 欧美一级在线播放| 亚洲国产婷婷香蕉久久久久久99 | 久久全国免费视频| 夜夜爽99久久国产综合精品女不卡| 正在播放欧美视频| 在线成人激情| 亚洲一区高清| 亚洲乱码久久| 久久精品av麻豆的观看方式| 中文亚洲免费| 狼狼综合久久久久综合网| 亚洲欧美日韩国产中文| 欧美freesex8一10精品| 国产亚洲成av人在线观看导航| 欧美一区二区免费| 亚洲欧美综合精品久久成人| 国产一级一区二区| 久久五月天婷婷| 久久夜色精品国产亚洲aⅴ| 禁久久精品乱码| 欧美 日韩 国产在线| 欧美bbbxxxxx| 亚洲一区日韩| 午夜精品久久久久久99热软件| 国产农村妇女毛片精品久久莱园子| 亚洲欧美中文另类| 篠田优中文在线播放第一区| 国产亚洲福利| 欧美一级夜夜爽| 国产精品久久精品日日| 一区二区三区波多野结衣在线观看| 黄色av一区| 午夜精品美女自拍福到在线| 欧美伊人精品成人久久综合97 | 亚洲伦理在线观看| 国产精品99一区二区| 亚洲麻豆av| av不卡在线观看| 国产精品视频免费观看| 久久精品123| 农夫在线精品视频免费观看| 国产日韩视频| 日韩视频不卡中文| 在线综合欧美| 欧美日韩综合在线| 99精品视频免费观看视频| 妖精视频成人观看www| 欧美国产精品专区| 亚洲激情影视| 亚洲美女精品一区| 欧美黄色日本| 日韩视频在线免费观看| 一区二区欧美在线| 国产精品高精视频免费| 亚洲一区精品视频| 国产精品久久7| 久久成人亚洲| 午夜精品免费视频| 一本在线高清不卡dvd | 午夜精品久久久久影视| 最新国产成人在线观看| 亚洲欧美日韩在线| 在线视频日韩| 久久综合中文字幕| 久久精品一区二区三区不卡| 欧美精品激情| 欧美寡妇偷汉性猛交| 国产欧美一区二区三区视频| 91久久综合亚洲鲁鲁五月天| 禁断一区二区三区在线| 亚洲欧美日韩国产另类专区| 国产毛片一区| 久久久久青草大香线综合精品| 久久综合久久综合久久综合| 亚洲欧美日韩成人| 欧美成人午夜激情| 玖玖视频精品| 国产亚洲美州欧州综合国| 在线视频精品一区| 亚洲天堂免费观看| 鲁鲁狠狠狠7777一区二区| 欧美亚洲免费高清在线观看| 欧美日韩国产va另类| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲九九精品| 可以免费看不卡的av网站| 久久夜色精品亚洲噜噜国产mv| 国产精品尤物| 亚洲在线中文字幕| 亚洲欧美一区二区视频| 欧美特黄视频| 一区二区欧美在线| 亚洲砖区区免费| 久久免费高清视频| 欧美激情一区二区三区 | 性刺激综合网| 亚洲黄色尤物视频| 久久久99爱| 亚洲无线一线二线三线区别av| 永久域名在线精品| 国产精品视频免费观看| 欧美人成在线| 久久婷婷亚洲| 欧美亚洲一区三区| 一本一本久久| 亚洲福利视频二区| 巨乳诱惑日韩免费av| 性欧美大战久久久久久久久| 欧美国产日韩xxxxx| 99精品免费视频| 欧美日韩视频在线一区二区| 在线亚洲一区| 久久久久久网| 亚洲精品麻豆| 国产精品黄视频| 久久精品99无色码中文字幕| 欧美国产精品va在线观看| 99亚洲一区二区| 国产女人精品视频| 免费黄网站欧美| 一区二区三区日韩精品| 久久女同互慰一区二区三区| 亚洲精品久久嫩草网站秘色| 国产精品久久久久久久久免费桃花| 亚洲欧美日韩国产成人精品影院| 蜜桃久久精品乱码一区二区| 99xxxx成人网| 国产免费亚洲高清| 久久一区激情| 亚洲视频一区二区免费在线观看| 久久久久国产精品人| 亚洲精品中文字幕有码专区| 国产酒店精品激情| 欧美成人综合| 欧美在线一区二区三区| 欧美日韩一区二区三区在线| 香蕉国产精品偷在线观看不卡| 亚洲人成网站精品片在线观看| 久久综合色婷婷| 久久夜色精品国产欧美乱极品| 久久激情综合网| 久久精品一区蜜桃臀影院 | 亚洲素人在线| 亚洲综合色噜噜狠狠| 欧美三级日本三级少妇99| 免费久久99精品国产| 亚洲国产成人久久综合| 久久久亚洲一区| 亚洲自拍另类| 亚洲精品视频二区| 亚洲电影专区| 国产专区一区| 国产欧美一区二区三区沐欲| 欧美视频精品在线观看| 欧美激情视频在线播放| 免费欧美日韩| 美女国产精品|