posts - 8,  comments - 25,  trackbacks - 0

          我們知道在學(xué)習(xí)php和jsp的時(shí)候,出現(xiàn)亂碼是經(jīng)常性的事情,怎樣來一勞永逸的解決這個(gè)問題,我來做個(gè)總結(jié)。

          首先來了解一下字符集,我們關(guān)心的字符集大概有這么幾個(gè),iso-8859-1、gb2312、gbk、utf-8,其中iso-8859-1是采用1個(gè)字節(jié)進(jìn)行編碼,而gb2312和gbk則是在其基礎(chǔ)之上使用雙字節(jié)來對(duì)漢字進(jìn)行編碼,而utf-8使用了3個(gè)字節(jié)編碼(實(shí)際上是變字節(jié)編碼,一般2-4個(gè)字節(jié)),因此它容納了幾乎所有字符,包括中國(guó)、日本和韓國(guó)的表意字符。這也就不難理解為什么字符集設(shè)置錯(cuò)誤會(huì)導(dǎo)致亂碼了。

          在來看一下在編程的過程中有哪些地方涉及到字符集的設(shè)置,本質(zhì)上只有兩個(gè)地方,文件本身的字符集和瀏覽器解析時(shí)使用的字符集,當(dāng)然數(shù)據(jù)庫(kù)也存在字符集的設(shè)置(其實(shí)數(shù)據(jù)庫(kù)本質(zhì)和文件沒有區(qū)別),那怎樣才能避免亂碼呢?我們要保證字符集的一致性,那就是數(shù)據(jù)庫(kù)、文件、瀏覽器3者使用的字符集是一致的,要么都是gb2312,要么都是utf-8,當(dāng)然iso-8859-1不行,它不支持中文。

          數(shù)據(jù)庫(kù)在建庫(kù)和建表時(shí)可以設(shè)置字符集,文件在保存的時(shí)候可以選擇字符集,那么瀏覽器的字符集怎么設(shè)置呢,首先瀏覽器由一個(gè)默認(rèn)字符集,在中文操作系統(tǒng)下一般默認(rèn)為gb2312,如果不進(jìn)行設(shè)置,它就是解析文件的字符集;那應(yīng)該怎么設(shè)置呢,有兩種方法,一種在html中設(shè)置,即使用meta標(biāo)簽,在meta標(biāo)簽里面制定Content-type就可以了,meta標(biāo)簽是用來模擬http頭信息的,另外一種就是在編程語(yǔ)言進(jìn)行設(shè)置,我們可以向http header里面添加一個(gè)Content-type來指定字符集,如php里面的header()結(jié)構(gòu).

          可是萬(wàn)一我們不能控制數(shù)據(jù)庫(kù)或某些文件的編碼了,那應(yīng)該怎么處理呢,例如你現(xiàn)在所有的項(xiàng)目都是采用的utf-8(建議都這樣使用),可是數(shù)據(jù)庫(kù)里面的數(shù)據(jù)卻是gb2312,或者某個(gè)遠(yuǎn)程文件是使用gb2312編碼,這些是你無(wú)法修改的,我們只有在程序中進(jìn)行修改,如在php里面提供了iconv函數(shù)和mb系列函數(shù)進(jìn)行字符的編碼修改。

          總之,一句話,讓項(xiàng)目的所有地方保持編碼一致性,無(wú)法控制的部分用字符集轉(zhuǎn)化函數(shù)來改變它。

          posted on 2008-08-25 22:59 我是風(fēng)之子 閱讀(2511) 評(píng)論(2)  編輯  收藏 所屬分類: 服務(wù)器相關(guān)

          FeedBack:
          # re: 關(guān)于編碼問題
          2008-08-26 20:23 | coca
          utf-8不是固定三個(gè)字節(jié)的  回復(fù)  更多評(píng)論
            
          # re: 關(guān)于編碼問題
          2008-08-27 10:59 | 我是風(fēng)之子
          @coca
          恩,是的,謝謝提醒,utf-8是變長(zhǎng)字節(jié)編碼的  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          相冊(cè)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 舒兰市| 龙海市| 沧源| 天等县| 新丰县| 丽水市| 花莲市| 乌兰浩特市| 宿松县| 齐河县| 长治市| 延庆县| 阿拉善左旗| 宜春市| 屏东市| 嘉峪关市| 博野县| 任丘市| 花莲市| 怀柔区| 阿坝| 盈江县| 长葛市| 吉林市| 皮山县| 永德县| 西平县| 遵化市| 邓州市| 门头沟区| 新密市| 白玉县| 新闻| 天长市| 彭州市| 萨嘎县| 建德市| 聊城市| 获嘉县| 辉县市| 光山县|