避免不了的是, 文件讀取問題:
假如我們讀取一個檔, 檔保存時, 使用的編碼格式, 決定了我們從檔讀取的內容的編碼格式, 例如, 我們從記事本新建一個文字檔test.txt, 編輯內容, 保存的時候注意, 編碼格式是可以選擇的, 例如我們可以選擇gb2312,那麼使用python讀取檔內容, 方式如下:
python給我們提供了一個包codecs進行檔的讀取, 這個包中的open()函數可以指定編碼的類型:
一個人自學很有可能因為動力不足而中途放棄,
0、big endian和little endian
big endian和little endian是CPU處理多位元組數的不同方式。 例如“漢”字的Unicode編碼是6C49。 那麼寫到檔裡時, 究竟是將6C寫在前面, 還是將49寫在前 面?如果將6C寫在前面, 就是big endian。 還是將49寫在前面, 就是little endian。
“endian”這個詞出自《格列佛遊記》。 小人國的內戰就源于吃雞蛋時是究竟從大頭(Big-Endian)敲開還是從小頭(Little-Endian)敲開,
我們一般將endian翻譯成“位元組序”, 將big endian和little endian稱作“大尾”和“小尾”
3、UCS-2、UCS-4、BMP
UCS有兩種格式:UCS-2和UCS-4。顧名思義,UCS-2就是用兩個位元組編碼,UCS-4就是用4個位元組(實際上只用了31位,最高位元必須為0)編碼。下面讓我們做一些簡單的數學遊戲:
UCS-2有2^16=65536個碼位,UCS-4有2^31=2147483648個碼位。
UCS -4根據最高位元為0的最高位元組分成2^7=128個group。每個group再根據次高位元組分為256個plane。每個plane根據第3個位元組分為 256行 (rows),每行包含256個cells。當然同一行的cells只是最後一個位元組不同,其餘都相同。
group 0的plane 0被稱作Basic Multilingual Plane, 即BMP。或者說UCS-4中,高兩個位元組為0的碼位元被稱作BMP。
將UCS-4的BMP去掉前面的兩個零位元組就得到了UCS-2。在UCS-2的兩個位元組前加上兩個零位元組,就得到了UCS-4的BMP。而目前的UCS-4規範中還沒有任何字元被分配在BMP之外。
3、UCS-2、UCS-4、BMP
UCS有兩種格式:UCS-2和UCS-4。顧名思義,UCS-2就是用兩個位元組編碼,UCS-4就是用4個位元組(實際上只用了31位,最高位元必須為0)編碼。下面讓我們做一些簡單的數學遊戲:
UCS-2有2^16=65536個碼位,UCS-4有2^31=2147483648個碼位。
UCS -4根據最高位元為0的最高位元組分成2^7=128個group。每個group再根據次高位元組分為256個plane。每個plane根據第3個位元組分為 256行 (rows),每行包含256個cells。當然同一行的cells只是最後一個位元組不同,其餘都相同。
group 0的plane 0被稱作Basic Multilingual Plane, 即BMP。或者說UCS-4中,高兩個位元組為0的碼位元被稱作BMP。
將UCS-4的BMP去掉前面的兩個零位元組就得到了UCS-2。在UCS-2的兩個位元組前加上兩個零位元組,就得到了UCS-4的BMP。而目前的UCS-4規範中還沒有任何字元被分配在BMP之外。