成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

編碼解碼UNICODE

baukh789 / 2173人閱讀

摘要:其他編碼的可以參考,,的選擇不考慮隨機(jī)訪問,,查找第個字符時間復(fù)雜度隨機(jī)訪問,只用之內(nèi)的字符,,時間復(fù)雜度隨機(jī)訪問,超過了,詳解編碼

1.字符集vs字符編碼,編碼&解碼

Character----->code point----->bytes
前兩者字符集的關(guān)系,可以統(tǒng)稱為codepoint;從codepoint到在計算機(jī)上的存儲形式,稱為編碼,反過來稱為解碼;
字符集:單個符號(character)對應(yīng)一個無符號數(shù)字(通常16進(jìn)制表示,稱為代碼點code point),這種對應(yīng)關(guān)系稱為字符集
字符編碼:代碼點與二進(jìn)制的對應(yīng)關(guān)系稱為字符編碼,內(nèi)存或磁盤存儲數(shù)據(jù)的形式為二進(jìn)制

2.歷史:UCS-2(兩個字節(jié)定長編碼)---USC-4,UTF-32(四個字節(jié)定長編碼)----UTF-16------UTF-8

我國發(fā)布的:GB2312---GBK(GB2312的擴(kuò)展)

3.GB2312:兩個字節(jié)表示字符碼

             兼容ASCII
             一個字節(jié)中的1位區(qū)分,1表示GB2312字符集,0表示ASCII字符集
             最多可以表示94*94個字符,留有一部分?jǐn)U展
             編碼主要是EUC-CN,兼容ASCII

4.Unicode:4個字節(jié)表示

UTF-8,UTF-16,變長編碼
    UTF-16,兩個字節(jié)變長編碼(2,4)
    UTF-8,(1,2,3,4)
UTF-32,定長編碼(4字節(jié))

5.BMP:

Unicode 標(biāo)識符通過一個明確的名字和一個整數(shù)來作為它的碼位(code point).比如,“?” 字符的碼位可以用“版權(quán)標(biāo)志”和U+00A9(0xA9,也可以寫作十進(jìn)制 169)來表示。
Unicode 字符分為 17 組平面,每個平面擁有 2^16 (65,536)個碼位.有一些碼位沒有分配字符,也有一些碼位被保留,成為私有的,也有一些碼位是永遠(yuǎn)被保留的,作為無字符的標(biāo)志。每一個碼位都可以用 16 進(jìn)制 xy0000 到 xyFFFF 來表示,這里的 xy 是表示一個 16 進(jìn)制的值,從 00 到 10。
這第一個位置(當(dāng) xy 是 00 的時候)被稱為 BMP (基本多文種平面, Basic Multilingual Plane)。它包含了最常用的碼位從 U+0000 到 U+FFFF。

6.JS的UTF-16(歷史遺留問題,JS選用UTF-16):http://developer.51cto.com/ar...

兩個字節(jié)為一個單元,LENGTH為1

7.BOM(BYTE ORDER MARK)

UTF-16 (BE)    FE FF    254 255      big endian 大端
UTF-16 (LE)    FF FE    255 254  little endian 小端


UTF-16 與 UTF-32 還有一個不明顯的缺點。我們知道不同的計算機(jī)存儲字節(jié)的順序是不一樣的,這也就意味著U+4E2D?在 UTF-16 可以保存為4E 2D,也可以保存成2D 4E,這取決于計算機(jī)是采用大端模式還是小端模式,UTF-32 的情況也類似。為了解決這個問題,引入了?BOM (Byte Order Mark),它是一特殊的不可見字符,位于文件的起始位置,標(biāo)示該文件的字節(jié)序。對于 UTF-16 來說,BOM 為U+FEFF(FF 比 FE 大 1),如果 UTF-16 編碼的文件以FF FE開始,那么就意味著其字節(jié)序為小端模式,如果以FE FF開始,那么就是大端模式。
其他 UTF-* 編碼的 BOM 可以參考?Representations of byte order marks by encoding

8.UTF-8,UTF-16,UTF-32的選擇:

1)不考慮隨機(jī)訪問,UTF-8,查找第N個字符時間復(fù)雜度(O(N))
2)隨機(jī)訪問,只用65535之內(nèi)的字符,UTF-16,時間復(fù)雜度(O(1))
3)隨機(jī)訪問,超過了65535,UTF-32,O(1)

9.詳解UTF-8編碼

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81157.html

相關(guān)文章

  • Python2.x 字符編碼終極指南

    摘要:值得注意的是,有的編碼方案不一定能表示某些信息,這時編碼就會失敗,比如就不能用來表示中文。數(shù)組的每一項是一個字節(jié),用來表示。所以對于字符串來說,其長度等于編碼后字節(jié)的長度。所以,讓來編碼解碼中文,就超出了其能力范圍。 在人機(jī)交互之字符編碼 一文中對字符編碼進(jìn)行了詳細(xì)的討論,并通過一些簡單的小程序驗證了我們對于字符編碼的認(rèn)識。但僅了解這篇文章的內(nèi)容,并不能幫我們在日常編程中躲過一些字符編...

    Amio 評論0 收藏0
  • unicode之痛【精校版】

    摘要:之痛原文地址譯者校正實用編程指南這是我在所做的演講。事實一和二共同造成了計算機(jī)設(shè)備結(jié)構(gòu)與世界人類需求的一個沖突。就是為了解決之前的老的字符集問題。值意味著,失敗時將會返回一個標(biāo)準(zhǔn)的替代字符。將使用進(jìn)行了解碼。 Unicode之痛原文地址: http://nedbatchelder.com/text...譯者: yudun1989 校正: sicklife實用Unicode編程指南這是...

    zombieda 評論0 收藏0
  • PyTips 0x09 - Python 中 Unicode 的正確用法

    摘要:只包含了個基本拉丁字母阿拉伯?dāng)?shù)目字和英式標(biāo)點符號一共個字符,因此只需要不占滿一個字節(jié)就可以存儲,而則涵蓋的數(shù)據(jù)除了視覺上的字形編碼方法標(biāo)準(zhǔn)的字符編碼外,還包含了字符特性,如大小寫字母,共可包含個字符,而到現(xiàn)在只填充了其中的個位置。 項目地址:https://git.io/pytips 0x07 和 0x08 分別介紹了 Python 中的字符串類型(str)和字節(jié)類型(byte),以及...

    shenhualong 評論0 收藏0
  • python編碼的意義

    摘要:而他們的中文釋義,就是對新手的最大陷阱編碼。而碼,也就是美國信息交換標(biāo)準(zhǔn)碼,年發(fā)布,位字符編碼中影響最大的一種。 編碼,還是編碼! python2的直鉤——編碼異常 當(dāng)你用python打開一篇中文文檔,準(zhǔn)備讀取里面的數(shù)據(jù)開始實驗...當(dāng)你處理好你的數(shù)據(jù),打算打印出易于閱讀的結(jié)果給boss檢查...甚至當(dāng)你剛剛開始編寫自己的代碼,就寫了一句話... text = 什么鬼 只要你開始運(yùn)行自...

    e10101 評論0 收藏0
  • 關(guān)于python的編解碼(decode, encode)

    摘要:,,等屬于不同的字符集,轉(zhuǎn)換編碼就是在它們中的任意兩者間進(jìn)行。一般個人用的電腦上控制臺基本上都是編碼的,但運(yùn)維的機(jī)器上基本全是,中文的時候就會有酸爽的問題。 總結(jié)總結(jié),本文僅適用于python2.x 默認(rèn)編碼與開頭聲明 首先是開頭的地方聲明編碼 # coding: utf8 這個東西的用處是聲明文件編碼為utf8(要寫在前兩行內(nèi)),不然文件里如果有中文,比如 a = 美麗 b = u美...

    shusen 評論0 收藏0

發(fā)表評論

0條評論

baukh789

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<