python中utf-8是什么意思_python中Unicode和UTF-8的区别
1,UTF-8
在python的開始處,#coding:utf-8或者#coding=utf-8的作用一樣,聲明Python代碼的文本格式是UTF-8,按照這種格式來讀取程序。
如下編寫一個腳本:
如果不添加#coding=utf-8,腳本有中文時程序會報錯
2,Unicode和UFT-8的區別
Unicode 是字符集
UTF-8 是編碼規則
字符集:為每一個「字符」分配一個唯一的 ID(學名為碼位 / 碼點 / Code Point)
編碼規則:將「碼位」轉換為字節序列的規則(編碼/解碼 可以理解為 加密/解密 的過程)
舉一個例子:It's 知乎日報
你看到的unicode字符集是這樣的編碼表:
I 0049
t 0074
' 0027
s 0073
0020
知 77e5
乎 4e4e
日 65e5
報 62a5
每一個字符對應一個十六進制數字。
計算機只懂二進制,因此,嚴格按照unicode的方式(UCS-2),應該這樣存儲:
I 00000000 01001001
t 00000000 01110100
' 00000000 00100111
s 00000000 01110011
00000000 00100000
知 01110111 11100101
乎 01001110 01001110
日 01100101 11100101
報 01100010 10100101
這個字符串總共占用了18個字節,但是對比中英文的二進制碼,可以發現,英文前9位都是0!浪費啊,浪費硬盤,浪費流量。
UTF-8是這樣做的:
單字節的字符,字節的第一位設為0,對于英語文本,UTF-8碼只占用一個字節,和ASCII碼完全相同;
n個字節的字符(n>1),第一個字節的前n位設為1,第n+1位設為0,后面字節的前兩位都設為10,這n個字節的其余空位填充該字符unicode碼,高位用0補足。
這樣就形成了如下的UTF-8標記位:
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
... ...
于是,”It's 知乎日報“就變成了:
I 01001001
t 01110100
' 00100111
s 01110011
00100000
知 11100111 10011111 10100101
乎 11100100 10111001 10001110
日 11100110 10010111 10100101
報 11100110 10001010 10100101
和上邊的方案對比一下,英文短了,每個中文字符卻多用了一個字節。但是整個字符串只用了17個字節,比上邊的18個短了一點點。
python是支持Unicode的,在使用Unicode時,在字符串前加上u即可。
總結
以上是生活随笔為你收集整理的python中utf-8是什么意思_python中Unicode和UTF-8的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# redis hashid如何设置过
- 下一篇: if test 多条件_五条写好Java