真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

包含macos系統(tǒng)文字編碼的詞條

Unicode詳解

字符編碼的問(wèn)題,每個(gè)程序員都會(huì)遇到,深入探索其背后的原理和機(jī)制,能讓我們少走很多彎路。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比龍井網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式龍井網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋龍井地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。

Unicode ( 萬(wàn)國(guó)碼 、 國(guó)際碼 、 統(tǒng)一碼 、 單一碼 )是計(jì)算機(jī)科學(xué)領(lǐng)域里的一項(xiàng)業(yè)界標(biāo)準(zhǔn)。它對(duì)世界上大部分的文字系統(tǒng)進(jìn)行了整理、編碼,使得電腦可以用更為簡(jiǎn)單的方式來(lái)呈現(xiàn)和處理文字。

Unicode發(fā)展由非營(yíng)利機(jī)構(gòu)統(tǒng)一碼聯(lián)盟負(fù)責(zé),該機(jī)構(gòu)致力于讓Unicode方案替換既有的字符編碼方案。因?yàn)榧扔械姆桨竿臻g非常有限,亦不適用于多語(yǔ)環(huán)境。

統(tǒng)一碼聯(lián)盟在1991年首次發(fā)布了 The Unicode Standard 。

在2005年,Unicode的第十萬(wàn)個(gè)字元被引入成為標(biāo)準(zhǔn)之一,該字元被用于馬拉雅拉姆語(yǔ)。

目前實(shí)際應(yīng)用的統(tǒng)一碼版本對(duì)應(yīng)于UCS-2,使用16位的編碼空間。也就是每個(gè)字符占用2個(gè)字節(jié)。這樣理論上一共最多可以表示2的16次(即65536)個(gè)字符?;緷M足各種語(yǔ)言的使用。實(shí)際上當(dāng)前版本的統(tǒng)一碼并未完全使用這16位編碼,而是保留了大量空間以作為特殊使用或?qū)?lái)擴(kuò)展。

最新(但未實(shí)際廣泛使用)的統(tǒng)一碼版本定義了16個(gè)輔助平面,兩者合起來(lái)至少需要占據(jù)21位的編碼空間,比3字節(jié)略少。但事實(shí)上輔助平面字符仍然占用4字節(jié)編碼空間,與UCS-4保持一致。未來(lái)版本會(huì)涵蓋UCS-4的所有字符。UCS-4是一個(gè)更大的尚未填充完全的31位字符集,加上恒為0的首位,共需占據(jù)32位,即4字節(jié)。理論上最多能表示2的31次方個(gè)字符,完全可以涵蓋一切語(yǔ)言所用的符號(hào)。

通用字符集 (Universal Character Set)是由ISO制定的 ISO 10646 (或稱 ISO/IEC 10646 )標(biāo)準(zhǔn)所定義的標(biāo)準(zhǔn)字符集。

通用字符集包括了其他所有字符集。它保證了與其他字符集的雙向兼容,即,如果你將任何文本字符串翻譯到UCS格式,然后再翻譯回原編碼,你不會(huì)丟失任何信息。

UCS包含了已知語(yǔ)言的所有字符。除了拉丁語(yǔ)、希臘語(yǔ)、斯拉夫語(yǔ)、希伯來(lái)語(yǔ)、阿拉伯語(yǔ)、亞美尼亞語(yǔ)、格魯吉亞語(yǔ),還包括中文、日文、韓文這樣的方塊文字,UCS還包括大量的圖形、印刷、數(shù)學(xué)、科學(xué)符號(hào)。

ISO/IEC 10646定義了一個(gè)31位的字符集。

并不是所有的系統(tǒng)都需要支持像組合字符這樣的的先進(jìn)機(jī)制。因此ISO 10646指定了如下三種實(shí)現(xiàn)級(jí)別:

歷史上存在兩個(gè)獨(dú)立的嘗試創(chuàng)立單一字符集的組織,即:

1、國(guó)際標(biāo)準(zhǔn)化組織(ISO)于1984年創(chuàng)建的ISO/IEC

2、統(tǒng)一碼聯(lián)盟

統(tǒng)一碼聯(lián)盟和ISO/IEC都同意保持兩者標(biāo)準(zhǔn)的碼表兼容,并緊密地共同調(diào)整任何未來(lái)的擴(kuò)展。

Unicode的實(shí)現(xiàn)方式不同于編碼方式。一個(gè)字符的Unicode編碼是確定的。但是在實(shí)際傳輸過(guò)程中,由于不同系統(tǒng)平臺(tái)的設(shè)計(jì)不一定一致,以及出于節(jié)省空間的目的,對(duì)Unicode編碼的實(shí)現(xiàn)方式有所不同。

Unicode的實(shí)現(xiàn)方式稱為 Unicode轉(zhuǎn)換格式 (Unicode Transformation Format,簡(jiǎn)稱為 UTF )。

前面說(shuō)到,Unicode采用2個(gè)字節(jié)來(lái)編碼文件,但是如果一個(gè)僅包含7位ASCII字符的Unicode文件,每個(gè)字符使用2字節(jié)就浪費(fèi)了一般的存儲(chǔ)空間,其第一字節(jié)的8位始終為0,這是難以忍受。對(duì)于這種情況,可以使用UTF-8編碼,這是一種變長(zhǎng)編碼,它將基本7位ASCII字符仍用7位編碼表示,占用一個(gè)字節(jié)(首位補(bǔ)0)。而遇到與其他Unicode字符混合的情況,將按一定算法轉(zhuǎn)換,每個(gè)字符使用1-3個(gè)字節(jié)編碼,并利用首位為0或1進(jìn)行識(shí)別。

問(wèn)題來(lái)了,UTF-8變長(zhǎng)編碼格式的出現(xiàn)是為了節(jié)省存儲(chǔ)空間,變長(zhǎng)導(dǎo)致了UTF-8的兼容性相應(yīng)降低。

類似的,對(duì)未來(lái)會(huì)出現(xiàn)的需要4個(gè)字節(jié)的輔助平面字符和其他UCS-4擴(kuò)充字符,2字節(jié)編碼的UTF-16也需要通過(guò)一定的算法進(jìn)行轉(zhuǎn)換。

也就是說(shuō),UTF-16是為未來(lái)準(zhǔn)備的變長(zhǎng)編碼格式。

還有就是,在Mac和普通PC上,對(duì)于字節(jié)順序的理解是不一致的。這時(shí)同一字節(jié)流可能會(huì)被解釋為不同內(nèi)容,如某字符為十六進(jìn)制編碼4E59,按兩個(gè)字節(jié)拆分為4E和59,在Mac上讀取時(shí)是從低字節(jié)開(kāi)始,那么在Mac OS會(huì)認(rèn)為此4E59編碼為594E,找到的字符為“奎”,而在Windows上從高字節(jié)開(kāi)始讀取,則編碼為U+4E59的字符為“乙”。就是說(shuō)在Windows下以UTF-16編碼保存一個(gè)字符“乙”,在Mac OS環(huán)境下打開(kāi)會(huì)顯示成“奎”。此類情況說(shuō)明UTF-16的編碼順序若不加以人為定義就可能發(fā)生混淆。

于是在UTF-16編碼實(shí)現(xiàn)方式中使用了 大端序 (Big-Endian,簡(jiǎn)寫(xiě)為UTF-16 BE)、 小端序 (Little-Endian,簡(jiǎn)寫(xiě)為UTF-16 LE)的概念,以及可附加的字節(jié)順序記號(hào)解決方案,目前在PC機(jī)上的Windows系統(tǒng)和Linux系統(tǒng)對(duì)于UTF-16編碼默認(rèn)使用UTF-16 LE。目前在PC機(jī)上的Windows系統(tǒng)和Linux系統(tǒng)對(duì)于UTF-16編碼默認(rèn)使用UTF-16 LE。

在Windows XP附帶的記事本,“另存為”對(duì)話框可以選擇的四種編碼方式除去非Unicode編碼的ANSI(對(duì)于英文系統(tǒng)即ASCII編碼),中文系統(tǒng)則為GB2312或Big5外,其余三種為“Unicode”(對(duì)應(yīng)UTF-16 LE)、“Unicode big endian”(對(duì)應(yīng)UTF-16 BE)和“UTF-8”。

UTF-8,是我們最經(jīng)??吹降木幋a格式之一。前面已經(jīng)簡(jiǎn)單介紹過(guò),這是一種變長(zhǎng)編碼格式,變長(zhǎng)的目的是節(jié)省存儲(chǔ)空間。

UTF-8使用一至六個(gè)字節(jié)為每個(gè)字符編碼(2003年11月UTF-8被RFC 3629重新規(guī)范,只能使用原來(lái)Unicode定義的區(qū)域,U+0000到U+10FFFF,也就是說(shuō)最多四個(gè)字節(jié))。

下面介紹其編碼規(guī)則:

1、128個(gè)US-ASCII字符只需一個(gè)字節(jié)編碼(Unicode范圍由U+0000至U+007F)。

2、帶有附加符號(hào)的拉丁文、希臘文、西里爾字母、亞美尼亞語(yǔ)、希伯來(lái)文、阿拉伯文等則需要兩個(gè)字節(jié)編碼(Unicode范圍由U+0080至U+07FF)。

3、其他基本多文種平面(BMP)中的字元(這包含了大部分常用字,如大部分的漢字)使用三個(gè)字節(jié)編碼(Unicode范圍由U+0800至U+FFFF)。

4、其他極少使用的Unicode 輔助平面的字元使用四至六字節(jié)編碼。(Unicode范圍由U+10000至U+1FFFFF使用四字節(jié),Unicode范圍由U+200000至U+3FFFFFF使用五字節(jié),Unicode范圍由U+4000000至U+7FFFFFFF使用六字節(jié))。

對(duì)上述提及的第四種字元而言,UTF-8使用四至六個(gè)字節(jié)來(lái)編碼似乎太耗費(fèi)資源了。但UTF-8對(duì)所有常用的字元都可以用三個(gè)字節(jié)表示,而且它的另一種選擇,UTF-16編碼,對(duì)前述的第四種字符同樣需要四個(gè)字節(jié)來(lái)編碼,所以要決定UTF-8或UTF-16哪種編碼比較有效率,還要視所使用的字元的分布范圍而定。

下面來(lái)看看UTF-8具體怎么編碼各種類型的字符:

1、單字節(jié)編碼,字節(jié)由零開(kāi)始:0zzzzzzz。(z取值0或1,下同)

2、兩字節(jié)編碼:(110yyyyy 10zzzzzz)第一個(gè)字節(jié)由110開(kāi)始,接著的字節(jié)由10開(kāi)始

3、三字節(jié)編碼:(01110xxxx10yyyyyy 10zzzzzz)第一個(gè)字節(jié)由1110開(kāi)始,接著的字節(jié)由10開(kāi)始。

4、四字節(jié)編碼:(11110www 10xxxxxx 10yyyyyy 10zzzzzz)將由11110開(kāi)始,接著的字節(jié)由10開(kāi)始

UTF-16 是Unicode字符編碼五層次模型的第三層:字符編碼表。即把Unicode字符集的抽象碼位映射為16位長(zhǎng)的整數(shù),用于數(shù)據(jù)存儲(chǔ)或傳遞。Unicode字符的碼位,需要1個(gè)或者2個(gè)16位長(zhǎng)的碼元來(lái)表示,因此這是一個(gè)變長(zhǎng)表示。

Unicode的編碼空間從U+0000到+10FFFF,共有1,112,064個(gè)碼位(code point)可用來(lái)映射字符. Unicode的編碼空間可以劃分為17個(gè)平面(plane),每個(gè)平面包含216(65,536)個(gè)碼位。17個(gè)平面的碼位可表示為從U+xx0000到U+xxFFFF,其中xx表示十六進(jìn)制值從0016到1016,共計(jì)17個(gè)平面。第一個(gè)平面稱為 基本多語(yǔ)言平面 (Basic Multilingual Plane, BMP ),或稱第零平面(Plane 0)。其他平面稱為 輔助平面 (Supplementary Planes)?;径嗾Z(yǔ)言平面內(nèi),從U+D800到U+DFFF之間的碼位區(qū)段是永久保留不映射到Unicode字符。UTF-16就利用保留下來(lái)的0xD800-0xDFFF區(qū)段的碼位來(lái)對(duì)輔助平面的字符的碼位進(jìn)行編碼。

分平面來(lái)介紹UTF-16的實(shí)現(xiàn)方式:

1、第一個(gè)Unicode平面(碼位從U+0000至U+FFFF)包含了最常用的字符。該平面被稱為基本多語(yǔ)言平面,縮寫(xiě)為 BMP (Basic Multilingual Plane, BMP)。UTF-16與 UCS-2 編碼這個(gè)范圍內(nèi)的碼位為16比特長(zhǎng)的單個(gè)碼元,數(shù)值等價(jià)于對(duì)應(yīng)的碼位. BMP中的這些碼位是僅有的可以在UCS-2中表示的碼位.

2、輔助平面(Supplementary Planes)中的碼位,在UTF-16中被編碼為 一對(duì) 16比特長(zhǎng)的碼元(即32bit,4Bytes),稱作 代理對(duì) (surrogate pair),具體方法是:

算法可理解為:輔助平面中的碼位從U+10000到U+10FFFF,共計(jì)FFFFF個(gè),即220

=1,048,576個(gè),需要20位來(lái)表示。如果用兩個(gè)16位長(zhǎng)的整數(shù)組成的序列來(lái)表示,第一個(gè)整數(shù)(稱為前導(dǎo)代理)要容納上述20位的前10位,第二個(gè)整數(shù)(稱為后尾代理)容納上述20位的后10位。還要能根據(jù)16位整數(shù)的值直接判明屬于前導(dǎo)整數(shù)代理的值的范圍(210=1024),還是后尾整數(shù)代理的值的范圍(也是210

=1024)。因此,需要在基本多語(yǔ)言平面中保留不對(duì)應(yīng)于Unicode字符的2048個(gè)碼位,就足以容納前導(dǎo)代理與后尾代理所需要的編碼空間。這對(duì)于基本多語(yǔ)言平面總計(jì)65536個(gè)碼位來(lái)說(shuō),僅占3.125%.

3、Unicode標(biāo)準(zhǔn)規(guī)定U+D800..U+DFFF的值不對(duì)應(yīng)于任何字符.

參考資料:

蘋(píng)果電腦MACBOOK PRO打開(kāi)WORD是亂碼怎么辦?

出現(xiàn)這種情況是因?yàn)閮?nèi)容的編碼格式和word規(guī)定的不一樣,在word中粘貼的時(shí)候選擇只粘貼文本即可,具體操作步驟如下:

1、打開(kāi)全是亂碼的word文檔,點(diǎn)擊“文件”選項(xiàng);

2、點(diǎn)擊“選項(xiàng)”;

3、點(diǎn)擊“高級(jí)”,取消“使用智能段落選擇”的勾選;

4、點(diǎn)擊“確定”;

5、全選文檔內(nèi)容,右擊選擇“復(fù)制”;

6、打開(kāi)一個(gè)新的word文檔,右擊選擇“只保留文本”即可。

apple筆記本文本編碼“簡(jiǎn)體中文(mac os)”不適用怎么辦?

編碼不要默認(rèn)成文本編碼“簡(jiǎn)體中文(mac os)”用自動(dòng)唄

我當(dāng)時(shí)是直接在論壇里找到過(guò)一個(gè)人家修改好的“文本編輯” 把你電腦里的替換成那個(gè)就行了 如果要的話我發(fā)給你吧 個(gè)人覺(jué)得自己直接改一下比較方便

在MACBOOK中打開(kāi)CSV文件總是亂碼,如何解決?

CSV文件里頭估計(jì)是沒(méi)有帶文字編碼的信息,所以Macbook用默認(rèn)的編碼打開(kāi)時(shí),出現(xiàn)亂碼的問(wèn)題。用下面的方法應(yīng)該可以正常打開(kāi)。

1,啟動(dòng)Excel,新建一個(gè)空文件

2,F(xiàn)ile -》 import

3,選擇要打開(kāi)的CSV文件

4,在Text Import Wizard step1 of 3 的導(dǎo)航窗口里,調(diào)整 File origin 選項(xiàng)里的文字編碼

估計(jì)是 Simplified Chinese (Windows,DOS)

5, Finish

(office for mac 2011 at macbook air)

蘋(píng)果筆記本mac os系統(tǒng)里面的系統(tǒng)文字有亂碼

解決方法:

打開(kāi)「文本編輯.app」,點(diǎn)擊屏幕左上角菜單欄的「文本編輯」「偏好設(shè)置…」「打開(kāi)和存儲(chǔ)」。選擇打開(kāi)純文本文件的編碼為「中文 GBxxxx」即可。

蘋(píng)果mac OS X系統(tǒng)下查看txt文件顯示亂碼該怎么辦

設(shè)置文本打開(kāi)編碼方式就可以了,設(shè)置應(yīng)該就在左上角蘋(píng)果圖標(biāo)的旁邊,在你文本應(yīng)用程序的焦點(diǎn)時(shí)。點(diǎn)擊文本編輯的偏好設(shè)置,里面有好多編碼可以選


分享名稱:包含macos系統(tǒng)文字編碼的詞條
文章地址:http://weahome.cn/article/hchhis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部