<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Unicode也叫萬國碼、單一碼,是電腦科學領域裡的一項業界標準,包括字元集、編碼方案等。對於世界上所有的語言文字再unicode中都可以檢視到。【漢】字的編碼解釋官網https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=6C49
unicode編碼就是為了統一世界上的編碼,有一個統一的規範。但是它還存在一些問題。
Unicode的問題
需要注意的是,Unicode只是一個符號集,它只規定了符號的二進位制程式碼,卻沒有規定這個二進位制程式碼應該如何儲存。
比如,漢字“嚴”的unicode是十六進位制數4E25,轉換成二進位制數足足有15位(100111000100101),也就是說這個符號的表示至少需要2個位元組。表示其他更大的符號,可能需要3個位元組或者4個位元組,甚至更多。
這裡就有兩個嚴重的問題
它們造成的結果是:
網際網路的普及,強烈要求出現一種統一的編碼方式。UTF-8就是在網際網路上使用最廣的一種unicode的實現方式。其他實現方式還包括UTF-16和UTF-32,不過在網際網路上基本不用。重複一遍,這裡的關係是,UTF-8是Unicode的實現方式之一。
UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個位元組表示一個符號,根據不同的符號而變化位元組長度。
UTF-8的編碼規則很簡單,只有二條:
下表總結了編碼規則,字母x表示可用編碼的位。
Unicode符號範圍 | UTF-8編碼方式
(十六進位制) | (二進位制)
--------------------±--------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Python程式碼舉例:
a = 'u6c49' # 漢的unicode編碼 print(a) a = '漢' print("漢字utf8格式:",a.encode('utf8')) print('漢字unicode格式:',a.encode('unicode_escape')) print('漢字gbk格式:',a.encode('gbk')) print('漢字gb2312格式:',a.encode('gb2312')) # 輸出結果 漢 漢字utf8格式: b'xe6xb1x89' 漢字unicode格式: b'\u6c49' 漢字gbk格式: b'xbaxba' 漢字gb2312格式: b'xbaxba'
可以看到以上結果,漢字的漢通過print列印時用的是unicode編碼,儲存時使用utf8,也即是我們儲存檔案時常用的編碼
with open('xxx.txt','w',encoding='utf-8') as f: f.write(xxx)
開啟的時候也要指定檔案編碼
with open(file_path, encoding='utf-8') as f: f.read()
當使用gbk編碼儲存的檔案使用utf8開啟時會報錯,使用gbk開啟即可
with open(r'gbk.txt','r',encoding='utf8') as f: print(f.read()) (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 0: invalid continuation byte
到此這篇關於Python有關Unicode UTF-8 GBK編碼問題詳解 的文章就介紹到這了,更多相關Python Unicode UTF-8 GBK編碼內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45