日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中utf-8是什么意思_python中Unicode和UTF-8的区别

發布時間:2025/4/16 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。