西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)業(yè)內(nèi)動(dòng)態(tài) 業(yè)內(nèi)資訊 → web程序網(wǎng)頁(yè)出現(xiàn)亂碼的原因分析

web程序網(wǎng)頁(yè)出現(xiàn)亂碼的原因分析

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2010/10/30 8:05:44字體大。A-A+

作者:佚名點(diǎn)擊:4149次評(píng)論:0次標(biāo)簽: 亂碼 字符集

App亂碼消除器1.0 官方正式版
  • 類(lèi)型:游戲其他大。1.1M語(yǔ)言:中文 評(píng)分:4.1
  • 標(biāo)簽:
立即下載
3 頁(yè)  常見(jiàn)問(wèn)題字符疑問(wèn)收集

 常見(jiàn)問(wèn)題字符疑問(wèn)收集

什么是ANSI字符集?

  這個(gè)不是固定字符集,如果在中文簡(jiǎn)體windows中,它代碼字符集是gb2312,在繁體值代表是big5等等。

 為什么英文字符不會(huì)出現(xiàn)亂碼?

  常見(jiàn)ascii碼字符集是:128字符,對(duì)應(yīng)編碼值是:1-128 ,二進(jìn)制表示是:00000001-01111111。它表示了所有常見(jiàn)英文數(shù)字,標(biāo)點(diǎn)符號(hào)。其它字符集都是由ascii碼字符集擴(kuò)展而來(lái),擴(kuò)展了最高位由10000000開(kāi)始,用多字節(jié)表示新的字符,基本都保留了:0xxxxxxx 開(kāi)頭128個(gè)基本字符,而且對(duì)應(yīng)編碼與ascii碼相同。

這樣,常見(jiàn)英文字符不論在那種字符集中,對(duì)應(yīng)字符編碼一致,存儲(chǔ)編碼也一樣。讀取時(shí)候無(wú)論用什么字符集讀取,它所對(duì)應(yīng)字符也一直。所有基本不會(huì)出現(xiàn)亂碼情況。

 讀取軟件能夠識(shí)別存儲(chǔ)文件的字符集嗎?

由于目前各種字符集加起來(lái)有上百種,目前除了unicode字符集,定義的存儲(chǔ)文件頭,基本其它字符集只是給出了對(duì)應(yīng)的字符編號(hào)值。因此,相同編號(hào)會(huì)出現(xiàn)在不同的字符集中,光從文件存儲(chǔ)的編碼值,是不能確定它的字符集的。如:gb2312字符集中,D6d0對(duì)應(yīng)是“中”,而同樣是:D6D0在ecu-jp 字符集中,對(duì)應(yīng)是“面”

什么是bom頭?

bom全稱(chēng)是:byte order mark,漢語(yǔ)意思是標(biāo)記字節(jié)順序碼。只是出現(xiàn)在:unicode字符集中,只有unicode字符集,存儲(chǔ)時(shí)候,要求指定編碼,如果不指定,windows還會(huì)用默認(rèn)的:ANSI讀取。常見(jiàn)的bom頭是:

UTF-8 ║ EF BB BF UTF-16LE ║ FF FE (小尾) UTF-16BE ║ FE FF (大尾) UTF-32LE ║ FF FE 00 00 UTF-32BE ║ 00 00 FE FF


unicode與utf-8 、utf-16 utf-32是什么關(guān)系?

unicode(統(tǒng)一碼、萬(wàn)國(guó)碼、單一碼)是一種字符集,Unicode是國(guó)際組織制定的可以容納世界上所有文字和符號(hào)的字符編碼方案。Unicode用數(shù)字0-0x10FFFF來(lái)映射這些字符,最多可以容納1114112個(gè)字符,或者說(shuō)有1114112個(gè)碼位。UTF-8、UTF-16、UTF-32都是將數(shù)字轉(zhuǎn)換到程序數(shù)據(jù)的編碼方案。在Unicode中:漢字“字”對(duì)應(yīng)的數(shù)字是23383。我們可以用:UTF-8、UTF-16、UTF-32表示這個(gè)數(shù)字,將數(shù)字23383存儲(chǔ)在計(jì)算機(jī)中。UTF-8對(duì)應(yīng)是:0xE6, 0xB1, 0x89(3個(gè)字節(jié)),UTF-16對(duì)應(yīng)是:0x6c49(2個(gè)字節(jié)),UTF-32對(duì)應(yīng)是:0x6c49(4個(gè)字節(jié))。utf-8,utf-16,utf-32是unicode碼一種實(shí)現(xiàn)形式,都是屬于unicode編碼。

unicode編碼特點(diǎn)是什么?

unicode編碼特點(diǎn)是,它定義了編碼方式和存儲(chǔ)實(shí)現(xiàn)方式。編碼方式就是上面說(shuō)的可以用,utf-8…utf-32表示,而存儲(chǔ)實(shí)現(xiàn)方式,無(wú)論那種編碼都知道了文件頭(bom)。因此,可以通過(guò)這個(gè)特殊頭來(lái)判斷存儲(chǔ)的文本文件使用那種字符集編碼。  為什么utf-8編碼不指定bom頭(可以理解為文件頭),軟件任然可以正常判斷出它字符集編碼?這個(gè)問(wèn)題估計(jì)很多朋友都會(huì)產(chǎn)生疑問(wèn),為什么utf-16不指定就讀亂碼,而utf-8可以。我們可以從下面的例子看下: utf-8是怎么樣從unicode轉(zhuǎn)換而來(lái)了。  Unicode編碼(16進(jìn)制) ║ UTF-8 字節(jié)流(二進(jìn)制) 000000 - 00007F ║ 0xxxxxxx 000080 - 0007FF ║ 110xxxxx 10xxxxxx 000800 - 00FFFF ║ 1110xxxx 10xxxxxx 10xxxxxx 010000 - 10FFFF ║ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 從上面看,發(fā)現(xiàn)規(guī)律沒(méi)有?第一個(gè)自己開(kāi)頭有幾個(gè)”1”,后面就對(duì)應(yīng)有幾個(gè)10開(kāi)頭字節(jié)了。 這樣我們都可以通過(guò)正則進(jìn)行檢測(cè)了.

        [\x09\x0A\x0D\x20-\x7E]             # ASCII
        |[\xC2-\xDF][\x80-\xBF]              # non-overlong 2-byte
        |\xE0[\xA0-\xBF][\x80-\xBF]         # excluding overlongs
        |[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}   # straight 3-byte
        |\xED[\x80-\x9F][\x80-\xBF]         # excluding surrogates
        |\xF0[\x90-\xBF][\x80-\xBF]{2}      # planes 1-3
        |[\xF1-\xF3][\x80-\xBF]{3}           # planes 4-15
        |\xF4[\x80-\x8F][\x80-\xBF]{2}      # plane 16

由于它獨(dú)特的編碼存儲(chǔ)特點(diǎn),因此目前常見(jiàn)文本處理軟件就能夠自動(dòng)分析出來(lái)。(windows記事本,editplus,notepad++等)

  

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    第 2 樓 北京開(kāi)心網(wǎng) 網(wǎng)友 客人 發(fā)表于: 2014/11/6 10:20:42
    真强啊!!!!

    支持( 0 ) 蓋樓(回復(fù))

    第 1 樓 廣東深圳電信 網(wǎng)友 客人 發(fā)表于: 2011/3/7 10:01:30
    阿蘇大

    支持( 0 ) 蓋樓(回復(fù))

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)