华南俳烁实业有限公司

python

當(dāng)前位置:中華考試網(wǎng) >> python >> python教程 >> 文章內(nèi)容

Python3編碼如何實(shí)現(xiàn)相互轉(zhuǎn)化?

來源:中華考試網(wǎng)  [2020年11月14日]  【

  可以通過 Unicode 編碼來進(jìn)行不同編碼之間的相互轉(zhuǎn)化

  了解 ASCII、Unicode、UTF-8、GBK 這四種編碼的相關(guān)概念

  不同的編碼之間不能互相識(shí)別,不能相互轉(zhuǎn)化,會(huì)報(bào)錯(cuò)或出現(xiàn)亂碼

  國(guó)際通用標(biāo)準(zhǔn):文字通過網(wǎng)絡(luò)傳輸、或硬盤存儲(chǔ)等不能使用 Unicode 編碼方式,因?yàn)?Unicode 使用的是升級(jí)版 32 位的,太費(fèi)流量和空間

  在 Python3 版本中,唯獨(dú) string 在內(nèi)存中的編碼方式是 Unicode,所以字符串不能直接進(jìn)行網(wǎng)絡(luò)傳輸及進(jìn)行文件的存儲(chǔ)

  bytes:也是一種數(shù)據(jù)類型,不是字節(jié),與 string 類型就像是孿生兄弟

  為啥要有 bytes ?—— bytes 內(nèi)部編碼不是 Unicode 方式,因此可以進(jìn)行網(wǎng)絡(luò)傳輸和文件的存儲(chǔ)

  前面提到,string 類型卻是 Unicode 方式,為啥平時(shí)我們用的是 string 而不是 bytes?——因?yàn)?bytes 的中文是 16 進(jìn)制方式存在

  因此,一般當(dāng)需要網(wǎng)絡(luò)傳輸數(shù)據(jù)或者文件存儲(chǔ)時(shí)要考慮用 bytes 類型。

  s1 = "abc"

  s2 = b"abc"

  print(type(s1)) #

  print(type(s2)) #

  string 轉(zhuǎn)化成 bytes 的方法

  填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽java課程!害怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可全國(guó)推薦就業(yè)!

預(yù)約申請(qǐng)免費(fèi)聽java課程

  • 地區(qū):
  • 姓名:
  • 手機(jī):

  ######## 方法一 ########

  # Unicode編碼方式的 string --> GBK編碼方式的 string --> GBK編碼方式的 bytes

  # encode 編碼

  # decode 解碼

  # Python3 版本中,字符串的編碼方式就是 Unicode, 所以這里等同于 s = u"中國(guó)"

  s1 = "中國(guó)"

  b = s1.encode("gbk")

  s2 = b.decode("gbk")

  print(s1) # 中國(guó)

  print(b) # b'\xd6\xd0\xb9\xfa'

  print(s2) # 中國(guó)

  print(type(s1)) #

  print(type(b)) #

  print(type(s2)) #

  # 原因解析:首先 s1 是以 Unicode 編碼方式的 string

  # 然后 b 是將 Unicode 編碼方式的 string 轉(zhuǎn)化成 GBK 編碼方式的 bytes

  # 最后 s2 是將 GBK 編碼方式的 bytes 轉(zhuǎn)化成 Unicode 編碼方式的 string

  ######## 方法二 ########

  # Unicode編碼方式的 string --> UTF-8 編碼方式的 string --> GBK編碼方式的 bytes

  s1 = "中國(guó)"

  b = s1.encode("utf-8")

  s2 = b.decode("utf-8")

  print(s1) # 中國(guó)

  print(b) # b'\xe4\xb8\xad\xe5\x9b\xbd'

  print(s2) # 中國(guó)

  print(type(s1)) #

  print(type(b)) #

  print(type(s2)) #

  強(qiáng)調(diào)一點(diǎn):不同編碼之間只能通過 Unicode 編碼方式來相互轉(zhuǎn)化

責(zé)編:fushihao

上一篇:python3字符編碼是什么?怎么用?

下一篇: 沒有了

  • 會(huì)計(jì)考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學(xué)歷考試
哈密市| 深泽县| 舟曲县| 句容市| 淅川县| 深圳市| 昔阳县| 江达县| 威远县| 贺州市| 云霄县| 丰原市| 临泉县| 雅安市| 岢岚县| 河源市| 吐鲁番市| 长沙县| 志丹县| 藁城市| 佳木斯市| 托克逊县| 镇赉县| 嫩江县| 黄山市| 浦东新区| 江陵县| 万源市| 虞城县| 正镶白旗| 二连浩特市| 通化市| 黑山县| 乌拉特前旗| 阿勒泰市| 青神县| 调兵山市| 罗江县| 特克斯县| 邳州市| 金乡县|