<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

        Open source are the greatest wealth---WANGPENG
    posts - 46, comments - 11, trackbacks - 0, articles - 0
       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    [轉(zhuǎn)載]MySQL字符集設(shè)定總結(jié)

    Posted on 2009-08-13 11:57 WANGPENG 閱讀(211) 評論(0)  編輯  收藏 所屬分類: DataBase

    MySQL(4.1以后版本) 服務(wù)器中有六個關(guān)鍵位置使用了字符集的概念,他們是:client connectiondatabaseresultsserver system.MySQL有兩個字符集概念:一個就是字符集本身,一個是字符集校驗規(guī)則.字符集影響數(shù)據(jù)在傳輸和存儲過程中的處理方式,而字符集校驗則影響ORDER BYGROUP BY這些排序方式.

    1.和存儲有關(guān)的
    服務(wù)器字符集 (@@character_set_server)
    庫字符集
    (@@character_set_database)
    表字符集

    字段字符集

    character_set_server: 服務(wù)器安裝時指定的默認(rèn)字符集設(shè)定.
    character_set_database
    : 數(shù)據(jù)庫服務(wù)器中某個庫使用的字符集設(shè)定,如果建庫時沒有指明,將使用服務(wù)器安裝時指定的字符集設(shè)置.
    character_s
    ystem: 數(shù)據(jù)庫系統(tǒng)使用的字符集設(shè)定.

    在創(chuàng)建一個表的時候,每個字段只要不是binary,都會有一個字符集.如果不指定,那么在SHOW CREATE TABLE的時候,它是不會顯示出來的.
    建表時候,字段字符集的選取方式如下:

    * if 字段指定的字符集
    * else if
    表指定的字符集
    * else if @@character_set_database
    * else @@character_set_server (
    如果沒有設(shè)定,這個值為latin1)

    2.和傳輸有關(guān)的
    @@
    character_set_connection
    @@character_set_results
    @@character_set_client

    character_set_connection: 連接數(shù)據(jù)庫的字符集設(shè)置類型,如果php沒有指明連接數(shù)據(jù)庫使用的字符集類型就按照服務(wù)器端默認(rèn)的字符設(shè)置
    character_set_results: 數(shù)據(jù)庫給客戶端返回時使用的字符集設(shè)定,如果沒有指明,使用服務(wù)器默認(rèn)的字符集

    character_set_client:
    客戶端使用的字符集,相當(dāng)于網(wǎng)頁中的字符集設(shè)置

    3.字符集的校對規(guī)則
    字符集的校對規(guī)則設(shè)定分別由上面的
    character_set_connection, character_set_database, character_set_server決定

    collation_connection: 連接字符集的校對規(guī)則
    collation_database
    :
    默認(rèn)數(shù)據(jù)庫使用的校對規(guī)則.當(dāng)默認(rèn)數(shù)據(jù)庫改變時服務(wù)器則設(shè)置該變量.如果沒有默認(rèn)數(shù)據(jù)庫,變量的值同collation_server
    collation_server: 服務(wù)器的默認(rèn)校對規(guī)則

    以上內(nèi)容中character_set_client,character_set_connection,character_set_results受客戶端默認(rèn)字符集影響,其中php編譯mysql模塊時的默認(rèn)字符集同樣也受到它鏈接的mysql動態(tài)庫影響,從而影響到phpcharacter_set_connection, character_set_client設(shè)定.當(dāng)默認(rèn)字符集不是utf8時,設(shè)置my.cnf

    [mysqld]
    default-character-set=utf8

    default-collation=utf8_general_ci

    default-character-set只能改變對存儲層(server,database,table,column,system)的設(shè)定,對于客戶端和服務(wù)器端的通訊層沒有任何影響.
    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

    解決字符集通訊設(shè)置不匹配的方法:
    (
    修改默認(rèn)的character_set_client,character_set_connection,character_set_result)

    1. 重新編譯mysqlphp,mysql加入編譯參數(shù) –default-character-set=utf8
    2.
    PHP程序在查詢數(shù)據(jù)庫之前,執(zhí)行mysql_query(”set names utf8;”);
    3.
    修改my.cnf,在[mysqld]中加入init-connect=”set names utf8” (對于超級用戶連接該選項無效)
    4.
    啟動mysqld 加入?yún)?shù) –skip-character-set-client-handshake忽略客戶端字符集

    主站蜘蛛池模板: 亚洲综合图色40p| 日韩精品成人亚洲专区| 亚洲国产成人片在线观看无码| 国产成人亚洲精品播放器下载 | 成人黄页网站免费观看大全| 亚洲精品第五页中文字幕| 最近高清中文字幕免费| 亚洲精彩视频在线观看| 亚洲一级毛片免费观看| 亚洲国产最大av| 夫妻免费无码V看片| 国内成人精品亚洲日本语音| 亚洲精品成人区在线观看| 一个人晚上在线观看的免费视频| 国产亚洲老熟女视频| a视频在线免费观看| 亚洲熟妇av一区| 好爽又高潮了毛片免费下载 | 无码乱人伦一区二区亚洲一| 久久国产乱子伦免费精品| 亚洲伊人久久大香线蕉影院| 免费观看毛片视频| 一区二区三区在线观看免费 | 亚洲精品无码一区二区| 亚洲av片一区二区三区| 99视频在线观看免费| 亚洲国产精品xo在线观看| 国产成人精品免费视频大全五级 | 国产亚洲精品福利在线无卡一| 好久久免费视频高清| www.亚洲成在线| 中文字幕亚洲电影| www.免费在线观看| 羞羞漫画在线成人漫画阅读免费 | 一级成人生活片免费看| 亚洲av福利无码无一区二区| 最近免费中文字幕视频高清在线看 | 免费一级毛片一级毛片aa| 暖暖日本免费中文字幕| 亚洲AV无码专区在线电影成人| 久久久久久a亚洲欧洲aⅴ|