• <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>

             

            unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian

            ASCII(American Standard Code for Information Interchange)

            ? 美國信息交換標(biāo)準(zhǔn)代碼,這是計(jì)算機(jī)上最早使用的通用的編碼方案。那個(gè)時(shí)候計(jì)算機(jī)還只是拉丁文字的專利,根本沒有想到現(xiàn)在計(jì)算機(jī)的發(fā)展勢(shì)頭,如果想到了,可能一開始就會(huì)使用 unicode 了。當(dāng)時(shí)絕大部分專家都認(rèn)為,要用計(jì)算機(jī),必須熟練掌握英文。這種編碼占用 7 個(gè) Bit ,在計(jì)算機(jī)中占用一個(gè)字節(jié), 8 位,最高位沒用,通訊的時(shí)候有時(shí)用作奇偶校驗(yàn)位。因此 ASCII 編碼的取值范圍實(shí)際上是: 0x00-0x7f, 只能表示 128 個(gè)字符。后來發(fā)現(xiàn) 128 個(gè)不太夠用,做了擴(kuò)展,叫做 ASCII 擴(kuò)展編碼,用足八位,取值范圍變成: 0x00-0xff, 能表示 256 個(gè)字符。其實(shí)這種擴(kuò)展意義不大,因?yàn)?/span> 256 個(gè)字符表示一些非拉丁文字遠(yuǎn)遠(yuǎn)不夠,但是表示拉丁文字,又用不完。所以擴(kuò)展的意義還是為了下面的 ANSI 編碼服務(wù)。

            ANSI American National Standard Institite

            美國國家標(biāo)準(zhǔn)協(xié)會(huì),也就是說,每個(gè)國家(非拉丁語系國家)自己制定自己的文字的編碼規(guī)則,并得到了 ANSI 認(rèn)可,符合 ANSI 的標(biāo)準(zhǔn),全世界在表示對(duì)應(yīng)國家文字的時(shí)候都通用這種編碼就叫 ANSI 編碼。換句話說,中國的 ANSI 編碼和在日本的 ANSI 的意思是不一樣的,因?yàn)槎即碜约簢业奈淖志幋a標(biāo)準(zhǔn)。比如中國的 ANSI 對(duì)應(yīng)就是 GB2312 標(biāo)準(zhǔn),日本就是 JIT 標(biāo)準(zhǔn),香港,臺(tái)灣對(duì)應(yīng)的是 BIG5 標(biāo)準(zhǔn)等等。當(dāng)然這個(gè)問題也比較復(fù)雜,微軟從 95 開始,用就是自己搞的一個(gè)標(biāo)準(zhǔn) GBK GB2312 里面只有 6763 個(gè)漢字, 682 個(gè)符號(hào),所以確實(shí)有時(shí)候不是很夠用。 GBK 一直能和 GB2312 相互混淆并且相安無事的一個(gè)重要原因是 GBK 全面兼容 GB2312 ,所以沒有出現(xiàn)任何沖突,你用 GB2312 編碼的文件通過 GBK 去解釋一定能獲得相同的顯示效果,換句話說: GBK 對(duì) GB2312 就是,你有的,我也有,你沒得的,我還有!

            ?

            好了, ANSI 的標(biāo)準(zhǔn)是什么呢,首先是 ASCII 的代碼你不能用!也就是說 ASCII 碼在任何 ANSI 中應(yīng)該都是相同的。其他的,你們自己擴(kuò)展。所以呢,中國人就把 ASCII 碼變成 8 位, 0x7f 之前我不動(dòng)你的,我從 0xa0 開始編, 0xa0 0xff 95 個(gè)碼位,對(duì)于中國字那簡直是杯水車薪,因此,就用兩個(gè)字節(jié)吧,因此編碼范圍就從 0xA1A1 - 0xFEFE ,這個(gè)范圍可以表示

            23901 個(gè)漢字。基本夠用了吧, GB2312 7000 多個(gè)呢! GBK 更猛,編碼范圍是從 0x8140 - 0xFEFE, 可以表示 3 萬多個(gè)漢字。可以看出,這兩種方案,都能保證漢字頭一個(gè)字節(jié)在 0x7f 以上,從而和 ASCII 不會(huì)發(fā)生沖突。能夠?qū)崿F(xiàn)英文和漢字同時(shí)顯示。 BIG5 ,香港和臺(tái)灣用的比較多,繁體,范圍: 0xA140 - 0xF9FE, 0xA1A1 - 0xF9FE ,每個(gè)字由兩個(gè)字節(jié)組成,其第一

            字節(jié)編碼范圍為 0xA1~0xF9 ,第二字節(jié)編碼范圍為 0x40-0x7E 0xA1-0xFE ,總計(jì)收入 13868 個(gè)字 ( 包括 5401 個(gè)常用字、 7652 個(gè)次常用字、 7 個(gè)擴(kuò)充字、以及 808 個(gè)各式符號(hào) )

            ?

            那么到底 ANSI 是多少位呢?這個(gè)不一定!比如在 GB2312 GBK BIG5 中,是兩位!但是其他標(biāo)準(zhǔn)或者其他語言如果不夠用,就完全可能不止兩位!

            例如: GB18030:
            GB18030-2000(GBK2K)
            GBK 的基礎(chǔ)上進(jìn)一步擴(kuò)展了漢字,增加了藏、蒙等少數(shù)民族的字形。 GBK2K 從根本上解決了字位不夠,字形不足的問題。它有幾個(gè)特點(diǎn):它并沒有確定所有的字形,只是規(guī)定了編碼范圍,留待以后擴(kuò)充。編碼是變長的,其二字節(jié)部分與 GBK 兼容;四字節(jié)部分是擴(kuò)充的字形、字位,其編碼范圍是首字節(jié) 0x81-0xfe 、二字節(jié)

            0x30-0x39 、三字節(jié) 0x81-0xfe 、四字節(jié) 0x30-0x39 。它的推廣是分階段的,首先要求實(shí)現(xiàn)的是能夠完全映射到 Unicode3.0 標(biāo)準(zhǔn)的所有字形。它是國家標(biāo)準(zhǔn),是強(qiáng)制性的。

            搞懂了 ANSI 的含義,我們發(fā)現(xiàn) ANSI 有個(gè)致命的缺陷,就是每個(gè)標(biāo)準(zhǔn)是各自為陣的,不保證能兼容。換句話說,要同時(shí)顯示中文和日本文或者阿拉伯文,就完全可能會(huì)出現(xiàn)一個(gè)編碼兩個(gè)字符集里面都有對(duì)應(yīng),不知道該顯示哪一個(gè)的問題,也就是編碼重疊的問題。顯然這樣的方案不好,所以 Unicode 才會(huì)出現(xiàn)!

            3.MBCS Multi-Byte Chactacter System Set)

            ? 多字節(jié)字符系統(tǒng)或者字符集,基于 ANSI 編碼的原理上,對(duì)一個(gè)字符的表示實(shí)際上無法確定他需要占用幾個(gè)字節(jié)的,只能從編碼本身來區(qū)分和解釋。因此計(jì)算機(jī)在存儲(chǔ)的時(shí)候,就是采用多字節(jié)存儲(chǔ)的形式。也就是你需要幾個(gè)字節(jié)我給你放幾個(gè)字節(jié),比如 A 我給你放一個(gè)字節(jié),比如 " ,我就給你放兩個(gè)字節(jié),這樣的字符表示形式就是 MBCS

            在基于 GBK windows 中,不會(huì)超過 2 個(gè)字節(jié),所以 windows 這種表示形式有叫做 DBCS Double-Byte Chactacter System ),其實(shí)算是 MBCS 的一個(gè)特例。

            C 語言默認(rèn)存放字符串就是用的 MBCS 格式。從原理上來說,這樣是非常經(jīng)濟(jì)的一種方式。
            4.CodePage

            代碼頁,最早來自 IBM ,后來被微軟, oracle ,SAP 等廣泛采用。因?yàn)?/span> ANSI 編碼每個(gè)國家都不統(tǒng)一,不兼容,可能導(dǎo)致沖突,所以一個(gè)系統(tǒng)在處理文字的時(shí)候,必須要告訴計(jì)算機(jī)你的 ANSI 是哪個(gè)國家和地區(qū)的標(biāo)準(zhǔn),這種國家和標(biāo)準(zhǔn)的代號(hào)(其實(shí)就是字符編碼格式的代號(hào)),微軟稱為 Codepage 代碼頁,其實(shí)這個(gè)代碼頁和字符集編碼的意思是一樣的。告訴你代碼頁,本質(zhì)就是告訴了你編碼格式。但是不同廠家的代碼頁可能是完全不同,哪怕是同樣的編碼,比如, UTF-8 字符編碼 IBM 對(duì)應(yīng)的代碼頁是 1208 ,在微軟對(duì)應(yīng)的是 65001, 在德國的 SAP 公司對(duì)應(yīng)的是 4110 。所以啊,其實(shí)本來就是一個(gè)東西,大家各自為政,搞那么多新名詞,實(shí)在沒必要!所以標(biāo)準(zhǔn)還是很重要的!!!

            比如 GBK 的在微軟的代碼頁是 936 ,告訴你代碼頁是 936 其實(shí)和告訴你我編碼格式是 GBK 效果完全相同。那么處理文本的時(shí)候就不會(huì)有問題,不會(huì)去考慮某個(gè)代碼是顯示的韓文還是中文,同樣,日文和韓文的代碼頁就和中文不同,這樣就可以

            避免編碼沖突導(dǎo)致計(jì)算機(jī)不知如何處理的問題。當(dāng)然用這個(gè)也可以很容易的切換語言版本。
            但是這都是治標(biāo)不治本的方法,還是無法解決同時(shí)顯示多種語言的問題,所以最后還是都用 unicode 吧,永遠(yuǎn)不會(huì)有沖突了。

            5.Unicode(Universal Code)

            ? 這是一個(gè)編碼方案,說白了就是一張包含全世界所有文字的一個(gè)編碼表,不管你用的上,用不上,不管是現(xiàn)在用的,還是以前用過的,只要這個(gè)世界上存在的文字符號(hào),統(tǒng)統(tǒng)給你一個(gè)唯一的編碼,這樣就不可能有任何沖突了。不管你要同時(shí)顯示任何文字,都沒有問題。
            ?
            因此在這樣的方案下, Unicode 出現(xiàn)了。 Unicode 編碼范圍是: 0-0x10FFFF ,可以容納 1114112 個(gè)字符, 100 多萬啊。全世界的字符根本用不完了, Unicode 5.0 版本中,才用了 238605 個(gè)碼位。所以足夠了。

            因此從碼位范圍看,嚴(yán)格的 unicode 需要 3 個(gè)字節(jié)來存儲(chǔ)。但是考慮到理解性和計(jì)算機(jī)處理的方便性,理論上還是用 4 個(gè)字節(jié)來描述。

            Unicode 采用的漢字相關(guān)編碼用的是《 CJK 統(tǒng)一漢字編碼字符集》 國家標(biāo)準(zhǔn) GB13000.1 是完全等同于國際標(biāo)準(zhǔn)《通用多八位編碼字符集 (UCS) ISO 10646.1 。《 GB13000.1 》中最重要的也經(jīng)常被采用的是其雙字節(jié)形式的基本多文種平面。在這 65536 個(gè)碼位的空間中,定義了幾乎所有國家或地區(qū)的語言文字和符號(hào)。其中從 0x4E00 0x9FA5 的連續(xù)區(qū)域包含了 20902 個(gè)來自中國(包括臺(tái)灣)、日本、韓國的漢字,稱為 CJK (Chinese Japanese Korean) 漢字。 CJK 是《 GB2312-80 》、《 BIG5 》等字符集的超集。 CJK 包含了中國,日本,韓國,越南,香港,也就是 CJKVH 。這個(gè)在 UNICODE Charset chart 中可以明顯看到。 unicode 的相關(guān)標(biāo)準(zhǔn)可以從 unicode.org 上面獲得,目前已經(jīng)進(jìn)行到了 6.0 版本。

            下面這段描述來自百度百科:
            Unicode
            字符集可以簡寫為 UCS Unicode Character Set )。早期的 ? unicodeUnicode 標(biāo)準(zhǔn)有 UCS-2 UCS-4 的說法。 UCS-2 用兩個(gè)字節(jié)編碼, UCS-4 4 個(gè)字節(jié)編碼。 UCS-4 根據(jù)最高位為 0 的最高字節(jié)分成 2^7=128 個(gè) group 。每個(gè) group 再根據(jù)次高字節(jié)分為 256 個(gè)平面( plane )。每個(gè)平面根據(jù)第 3 個(gè)字節(jié)分為 256 row ),每行有 256 個(gè)碼位( cell )。 group 0 的平面 0 被稱作 BMP Basic Multilingual Plane )。將 UCS-4 BMP 去掉前面的兩個(gè)零字節(jié)就得到了 UCS-2 。每個(gè)平面有 2^16=65536 個(gè)碼位。 Unicode 計(jì)劃使用了 17 個(gè)平面,一共有 17*65536=1114112 個(gè)碼位。在 Unicode 5.0.0 版本中,已定義的碼位只有 238605 個(gè),分布在平面 0 、平面 1 、平面 2 、平面 14 、平面 15 、平面 16 。其中平面 15 和平面 16 上只是定義了兩個(gè)各占 65534 個(gè)碼位的專用區(qū)( Private Use Area ),分別是 0xF0000-0xFFFFD 0x100000-0x10FFFD 。所謂專用區(qū),就是保留給大家放自定義字符的區(qū)域,可以簡寫為 PUA 平面 0 也有一個(gè)專用區(qū): 0xE000-0xF8FF ,有 6400 個(gè)碼位。平面 0 0xD800-0xDFFF ,共 2048 個(gè)碼位,是一個(gè)被稱作代理區(qū)( Surrogate )的特殊區(qū)域。代理區(qū)的目的用兩個(gè) UTF-16 字符表示 BMP 以外的字符。在介紹 UTF-16 編碼時(shí)會(huì)介紹。如前所述在 Unicode 5.0.0 版本中, 238605-65534*2-6400-2408=99089 。余下的 99089 個(gè)已定義碼位分布在平面 0 、平面 1 、平面 2 和平面 14 上,它們對(duì)應(yīng)著 Unicode 目前定義的 99089 個(gè)字符,其中包括 71226 個(gè)漢字。平面 0 、平面 1 、平面 2 和平面 14 上分別定義了 52080 3419 43253 337 個(gè)字符。平面 2 43253 個(gè)字符都是漢字。平面 0 上定義了 27973 個(gè)漢字。

            ?

            6.Unicode 的實(shí)現(xiàn)方案

            Unicode 其實(shí)只是一張巨大的編碼表。要在計(jì)算機(jī)里面實(shí)現(xiàn),也出現(xiàn)了幾種不同的方案。也就是說如何表示 unicode 編碼的問題。

            UTF-8 UCS Transformation Format 8bit)

            這個(gè)方案的意思以 8 位為單位來標(biāo)識(shí)文字,注意并不是說一個(gè)文字用 8 位標(biāo)識(shí)。他其實(shí)是一種 MBCS 方案,可變字節(jié)的。到底需要幾個(gè)字節(jié)表示一個(gè)符號(hào),這個(gè)要根據(jù)這個(gè)符號(hào)的 unicode 編碼來決定,最多 4 個(gè)字節(jié)。

            編碼規(guī)則如下:

            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   
            UTF-8
            的特點(diǎn)是對(duì)不同范圍的字符使用不同長度的編碼。對(duì)于 0x00-0x7F 之間的字符, UTF-8 編碼與 ASCII 編碼完全相同。

            UTF-8 編碼的最大長度是 4 個(gè)字節(jié)。從上表可以看出, 4 字節(jié)模板有 21 個(gè) x ,即可以容納 21 位二進(jìn)制數(shù)字。 Unicode 的最大碼位 0x10FFFF 也只有 21 位。

            1 字的 Unicode 編碼是 0x6C49 0x6C49 0x0800-0xFFFF 之間,使用用 3 字節(jié)模板了: 1110xxxx 10xxxxxx 10xxxxxx 。將 0x6C49 寫成二進(jìn)制是: 0110 1100 0100 1001 用這個(gè)比特流依次代替模板中的 x ,得到: 11100110 10110001 10001001 ,即 E6 B1 89   
            2 Unicode 編碼 0x20C30 0x010000-0x10FFFF 之間,使用用 4 字節(jié)模板了: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

            0x20C30 寫成 21 位二進(jìn)制數(shù)字(不足 21 位就在前面補(bǔ) 0 ): 0 0010 0000 1100 0011 0000 ,用這個(gè)比特流依次代替模板中的 x ,得到: 11110000 10100000 10110000 10110000 ,即 F0 A0 B0 B0

            2 UTF-16
            ?UTF-16
            編碼以 16 位無符號(hào)整數(shù)為單位。注意是 16 位為一個(gè)單位,不表示一個(gè)字符就只有 16 位。現(xiàn)在機(jī)器上的 unicode 編碼一般指的就是 UTF-16 。絕大部分 2 個(gè)字節(jié)就夠了,但是不能絕對(duì)的說所有字符都是 2 個(gè)字節(jié)。這個(gè)要看字符的 unicode 編碼處于什么范圍而定,有可能是 2 個(gè)字節(jié),也可能是 4 個(gè)字節(jié)。這點(diǎn)請(qǐng)注意!
            下面算法解釋來自百度百科。

            我們把 Unicode? unicode 編碼記作 U 。編碼規(guī)則如下:
            如果 U<0x10000 U UTF-16 編碼就是 U 對(duì)應(yīng)的 16 位無符號(hào)整數(shù)(為書寫簡便,下文將 16 位無符號(hào)整數(shù)記作 WORD )。

            如果 U≥0x10000 ,我們先計(jì)算 U'=U-0x10000 ,然后將 U' 寫成二進(jìn)制形式: yyyy yyyy yyxx xxxx xxxx U UTF-16 編碼(二進(jìn)制)就是: 110110yyyyyyyyyy 110111xxxxxxxxxx 。為什么 U' 可以被寫成 20 個(gè)二進(jìn)制位? Unicode 的最大碼位是 0x10ffff ,減去 0x10000 后, U' 的最大值是 0xfffff ,所以肯定可以用 20 個(gè)二進(jìn)制位表示。

            ??? 例如: Unicode 編碼 0x20C30 ,減去 0x10000 后,得到 0x10C30 ,寫成二進(jìn)制是: 0001 0000 1100 0011 0000 。用前 10

            位依次替代模板中的 y ,用后 10 位依次替代模板中的 x ,就得到: 1101100001000011 1101110000110000 ,即 0xD843

            0xDC30   
            ???
            按照上述規(guī)則, Unicode 編碼 0x10000-0x10FFFF UTF-16 編碼有兩個(gè) WORD ,第一個(gè) WORD 的高 6 位是 110110 ,第二個(gè) WORD 的高 6 位是 110111 。可見,第一個(gè) WORD 的取值范圍(二進(jìn)制)是 11011000 00000000 11011011 11111111 ,即 0xD800-0xDBFF 。第二個(gè) WORD 的取值范圍(二進(jìn)制)是 11011100 00000000 11011111 11111111 ,即 0xDC00-0xDFFF

              為了將一個(gè) WORD UTF-16 編碼與兩個(gè) WORD UTF-16 編碼區(qū)分開來, Unicode 編碼的設(shè)計(jì)者將 0xD800-0xDFFF 保留下來,并稱為代理區(qū)( Surrogate ):   
            D800
            DB7F     High Surrogates    高位替代   
            DB80
            DBFF     High Private Use Surrogates    高位專用替代   
            DC00
            DFFF     Low Surrogates    低位替代   
            ??
            高位替代就是指這個(gè)范圍的碼位是兩個(gè) WORD UTF-16 編碼的第一個(gè) WORD 。低位替代就是指這個(gè)范圍的碼位是兩個(gè) WORD UTF-16 編碼的第二個(gè) WORD 。那么,高位專用替代是什么意思?我們來解答這個(gè)問題,順便看看怎么由 UTF-16 編碼推導(dǎo) Unicode 編碼。   
            ?
            如果一個(gè)字符的 UTF-16 編碼的第一個(gè) WORD 0xDB80 0xDBFF 之間,那么它的 Unicode 編碼在什么范圍內(nèi)?我們知道第二個(gè) WORD 的取值范圍是 0xDC00-0xDFFF ,所以這個(gè)字符的 UTF-16 編碼范圍應(yīng)該是 0xDB80 0xDC00 0xDBFF 0xDFFF 。我們將這個(gè)范圍寫成二進(jìn)制:    1101101110000000 11011100 00000000 - 1101101111111111 1101111111111111   按

            照編碼的相反步驟,取出高低 WORD 的后 10 位,并拼在一起,得到    1110 0000 0000 0000 0000 - 1111 1111 1111 1111 1111?
            0xe0000-0xfffff ,按照編碼的相反步驟再加上 0x10000 ,得到 0xf0000-0x10ffff 。這就是 UTF-16 編碼的第一個(gè) WORD 0xdb80 0xdbff 之間的 Unicode 編碼范圍,即平面 15 和平面 16 。因?yàn)?/span> Unicode 標(biāo)準(zhǔn)將平面 15 和平面 16 都作為專用區(qū),所以

            0xDB80 0xDBFF 之間的保留碼位被稱作高位專用替代。

            3 UTF-32
            ?
            這個(gè)就簡單了,和 Unicode 碼表基本一一對(duì)應(yīng),固定四個(gè)字節(jié)。
            ?
            為什么不采用 UTF-32 呢,因?yàn)?/span> unicode 定義的范圍太大了,其實(shí) 99% 的人使用的字符編碼不會(huì)超過 2 個(gè)字節(jié),所以如同統(tǒng)一用 4 個(gè)字節(jié),簡單倒是簡單了,但是數(shù)據(jù)冗余確實(shí)太大了,不好,所以 16 位是最好的。就算遇到超過 16 位能表示的字符,我們也可以通過上面講到的代理技術(shù),采用 32 位標(biāo)識(shí),這樣的方案是最好的。所以現(xiàn)在絕大部分機(jī)器實(shí)現(xiàn) unicode

            還是采用的 utf-16 的方案。當(dāng)然也有 UTF-8 的方案。比如 windows 用的就是 UTF16 方案,不少 linux 用的就是 utf8 方案。

            7. 編碼存儲(chǔ)差異

            這里就要引出兩個(gè)名詞:
            LE
            little endian): 小字節(jié)字節(jié)序,意思就是一個(gè)單元在計(jì)算機(jī)中的存放時(shí)按照低位在前(低地址),高位在后(高地址)的模式存放。

            BE big endian): 大字節(jié)字節(jié)序,和 LE 相反,是高位在前,低位在后。

            比如一個(gè) unicode 編碼為: 0x006C49 ,如果是 LE ,那么在文件中的存放順序應(yīng)該是: 49 6c 00
            如果是 BE , 那么順序應(yīng)該是: 00 6c 49

            8. 編碼格式的檢測(cè)

            到底采用什么編碼,如果能檢測(cè)就好了。專家們也是這么想的,所以專家給每種格式和字節(jié)序規(guī)定了一些特殊的編碼,

            這些編碼在 unicode 中是沒有使用的,所以不用擔(dān)心會(huì)沖突。

            這個(gè)叫做 BOM Byte Order Mark )頭。意思是字節(jié)序標(biāo)志頭。通過它基本能確定編碼格式和字節(jié)序。
            UTF
            編碼    Byte Order Mark   
            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
            所以通過檢測(cè)文件前面的 BOM 頭,基本能確定編碼格式和字節(jié)序。
            但是這個(gè) BOM 頭只是建議添加,不是強(qiáng)制的,所以不少軟件和系統(tǒng)沒有添加這個(gè) BOM 頭(所以有些軟件格式中有帶 BOM 頭和 NoBOM 頭的選擇),這個(gè)時(shí)候要檢測(cè)什么格式,就比較麻煩了當(dāng)然可以檢測(cè),但是不能保證 100% 準(zhǔn)確,只能通過編碼范圍從概率上來檢查,雖然準(zhǔn)確度還是比較高,但是不能保證 100% 。所以,時(shí)常看到檢測(cè)錯(cuò)誤的軟件,也不奇怪了。

            總結(jié):
            ??
            終于寫完了,其實(shí)這些問題都是不統(tǒng)一導(dǎo)致的,屬于歷史問題,所以才會(huì)有這些困惑,這里也呼吁所有的軟件 開發(fā)人員自覺的采用 Unicode 標(biāo)準(zhǔn)進(jìn)行文字處理,我相信在不久的將來,這些困擾都不會(huì)存在了,因?yàn)樗熊浖际?/span> unicode d , 只要有字庫,任何文字都能同時(shí)顯示,也可以到任何語言的平臺(tái)上的去運(yùn)行,不再有亂碼的困惑!其實(shí)現(xiàn)在絕大部分軟件已經(jīng)是這么做的了!
            ??
            另外也不要被很多名詞屬于所迷惑,其實(shí)這些只是標(biāo)準(zhǔn)的問題,根本沒有什么新的東西,更沒有什么復(fù)雜的東西。

            ?

            摘自 http://blog.csdn.net/softman11/archive/2011/01/08/6124345.aspx

            ?

            posted on 2011-08-19 00:20 Vcer-JZ 閱讀(428) 評(píng)論(0)  編輯 收藏 引用 所屬分類: MFC

            導(dǎo)航

            統(tǒng)計(jì)

            隨筆分類

            隨筆檔案

            搜索

            最新評(píng)論

            久久免费视频6| 久久天天婷婷五月俺也去| 99久久久国产精品免费无卡顿| 日产精品久久久久久久| 99久久久国产精品免费无卡顿| 97超级碰碰碰碰久久久久| 久久天天躁狠狠躁夜夜avapp| 激情伊人五月天久久综合| 人妻少妇精品久久| 国产成年无码久久久久毛片| 日日狠狠久久偷偷色综合96蜜桃| 亚洲国产欧美国产综合久久| 久久精品成人影院| 国产精品18久久久久久vr | 久久噜噜久久久精品66| 久久久久久久97| 国产精品久久久久免费a∨| 久久精品视频免费| 囯产极品美女高潮无套久久久| 国产免费久久精品99久久| 国产精品9999久久久久| 精品人妻伦九区久久AAA片69| 久久青青草原精品国产软件| 91精品观看91久久久久久| 国产午夜福利精品久久2021| 伊人久久精品无码av一区| 色诱久久av| 人妻无码久久精品| 久久青青草原精品国产不卡 | 久久久久免费精品国产| 久久综合伊人77777麻豆| 国产999精品久久久久久| 草草久久久无码国产专区| 久久亚洲国产欧洲精品一| 久久99热狠狠色精品一区| 99久久成人国产精品免费| 99久久精品费精品国产一区二区| 久久精品九九亚洲精品| 国内精品久久久久久99蜜桃| 国产亚洲精品自在久久| 国产V综合V亚洲欧美久久|