成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于python的編解碼(decode, encode)

shusen / 987人閱讀

摘要:,,等屬于不同的字符集,轉(zhuǎn)換編碼就是在它們中的任意兩者間進(jìn)行。一般個(gè)人用的電腦上控制臺基本上都是編碼的,但運(yùn)維的機(jī)器上基本全是,中文的時(shí)候就會(huì)有酸爽的問題。

總結(jié)總結(jié),本文僅適用于python2.x

默認(rèn)編碼與開頭聲明

首先是開頭的地方聲明編碼

# coding: utf8

這個(gè)東西的用處是聲明文件編碼為utf8(要寫在前兩行內(nèi)),不然文件里如果有中文,比如

a = "美麗"
b = u"美麗"

中任何一種,運(yùn)行前就會(huì)提示你SyntaxError,Non-ASCII character... 之類,因?yàn)閜ython2.x的文件編碼默認(rèn)使用萬惡的ascii
開頭加上那句默認(rèn)編碼聲明就會(huì)變成utf8,獲取當(dāng)前的默認(rèn)編碼

sys.getdefaultencoding()
unicode與utf8

在python中,使用unicode類型作為編碼的基礎(chǔ)類型,編解碼要以其為中間形式過渡,即進(jìn)行strunicode之間的轉(zhuǎn)換。
解碼然后再編碼的過程,即str->unicode->str的過程。中間得到的叫做unicode對象

這里需要強(qiáng)調(diào)的是unicode是一種字符編碼方法,是 “與存儲無關(guān)的表示”,而utf8是一種以unicode進(jìn)行編碼的計(jì)算機(jī)二進(jìn)制表示,或者說傳輸規(guī)范。gbk,gb2312,gb18030, utf8等屬于不同的字符集,轉(zhuǎn)換編碼就是在它們中的任意兩者間進(jìn)行。

具體過程

具體的轉(zhuǎn)換,比如直接將一個(gè)字符串encode成另一種字符集表示,注意此處是字符串,即typestr的,引號前沒有加u前綴的

# coding: utf8

s="美麗"
s.encode("gbk")

則實(shí)際上會(huì)先以默認(rèn)編碼進(jìn)行decode,即decode("ascii"),開頭聲明了utf8,s的編碼就是utf8,ascii解碼不了utf8的字符會(huì)報(bào)錯(cuò)。那就改默認(rèn)編碼,

# coding: utf8
import sys

reload(sys)
sys.setdefaultencoding("utf-8")

s="美麗"
s.encode("gbk")

這樣把默認(rèn)編碼改成utf8,decode的時(shí)候就以默認(rèn)編碼utf8來進(jìn)行,能夠成功運(yùn)行

或者decode時(shí)指定類型,

# coding: utf8
import sys

s="美麗"
s.decode("utf8").encode("gbk")

對于typeunicode的,即加了u前綴的字符串,如上所說,直接encode即可

# coding: utf8
import sys

s = u"美麗"
s.encode("gbk")
控制臺的編碼

這又是另一個(gè)讓人困惑的地方——控制臺的編碼導(dǎo)致的亂碼問題甚至是報(bào)錯(cuò)。一般個(gè)人用的電腦上控制臺基本上都是utf8編碼的,但運(yùn)維的機(jī)器上基本全是ascii,print中文的時(shí)候就會(huì)有酸爽的問題。亂碼問題一般發(fā)生在windows下面,因?yàn)槟莻€(gè)編碼的字符集很與眾不同。所以當(dāng)以正確方式編解碼以后,還是出現(xiàn)問題,那問題很可能就出在控制臺上了

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/37662.html

相關(guān)文章

  • JavaScript中三種GBK/GB2312編解碼方案對比

    摘要:筆者在編碼詳解與中編碼實(shí)踐一文中介紹了中編碼相關(guān)的基礎(chǔ)知識,其中沒有介紹純粹的編解碼方案,筆者后來根據(jù)網(wǎng)上的代碼完善了下這個(gè)庫,并且對中三種不同的編解碼方案進(jìn)行了比較。 Isomorphic Urlencode Here is English Version For README 筆者在URL編碼詳解與DOM中GBK編碼實(shí)踐一文中介紹了JavaScript中URL編碼相關(guān)的基礎(chǔ)知識,其...

    BlackFlagBin 評論0 收藏0
  • Python中的文本和字節(jié)序列

    摘要:計(jì)算機(jī)中以字節(jié)為單位存儲和解釋信息,規(guī)定一個(gè)字節(jié)由八個(gè)二進(jìn)制位構(gòu)成,即個(gè)字節(jié)等于個(gè)比特。需要注意協(xié)議規(guī)定網(wǎng)絡(luò)字節(jié)序?yàn)榇蠖俗止?jié)序。以元組形式返回全部分組截獲的字符串。返回指定的組截獲的子串在中的結(jié)束索引子串最后一個(gè)字符的索引。 導(dǎo)語:本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之?dāng)?shù)據(jù)結(jié)構(gòu)篇的重點(diǎn)知識及個(gè)人心得,打算入門Python的朋友們可以來一起學(xué)習(xí)并交流。 本章重點(diǎn): 1、了解字符字節(jié)等概...

    AlphaWallet 評論0 收藏0
  • Python學(xué)習(xí)之路23-文本和字節(jié)序列

    摘要:字符編碼表,碼位碼元將編碼字符集中的碼位轉(zhuǎn)換成有限比特長度的整型值的序列。字符編碼方案,碼元序列化也稱為常說的序列化。每個(gè)字節(jié)里的二進(jìn)制數(shù)就是字節(jié)序列。另一個(gè)情況則是壓縮字節(jié)序列的值,如或進(jìn)程長度編碼等無損壓縮技術(shù)。 《流暢的Python》筆記。本篇主要講述不同編碼之間的轉(zhuǎn)換問題,比較繁雜,如果平時(shí)處理文本不多,或者語言比較單一,沒有多語言文本處理的需求,則可以略過此篇。 1. 前言 ...

    anRui 評論0 收藏0
  • Netty(三) 什么是 TCP 拆、粘包?如何解決?

    摘要:是一個(gè)面向字節(jié)流的協(xié)議,它是性質(zhì)是流式的,所以它并沒有分段??苫诜指舴鉀Q。編解碼的主要目的就是為了可以編碼成字節(jié)流用于在網(wǎng)絡(luò)中傳輸持久化存儲。 showImg(https://segmentfault.com/img/remote/1460000015895049); 前言 記得前段時(shí)間我們生產(chǎn)上的一個(gè)網(wǎng)關(guān)出現(xiàn)了故障。 這個(gè)網(wǎng)關(guān)邏輯非常簡單,就是接收客戶端的請求然后解析報(bào)文最后發(fā)送...

    YanceyOfficial 評論0 收藏0
  • 關(guān)于解決Python亂碼問題的終極解決方案 (TL;DR)

    摘要:關(guān)于解決亂碼問題的終極解決方案有個(gè)特別好玩的現(xiàn)象,當(dāng)我們?yōu)榱司幋a頭疼的時(shí)候,幾乎搜索到所有的文章都會(huì)先發(fā)一通牢騷。另外,關(guān)于的亂碼問題,又是一個(gè)新的較長篇章。 關(guān)于解決Python亂碼問題的終極解決方案 (TL;DR) showImg(https://segmentfault.com/img/remote/1460000013229494?w=809&h=184); 有個(gè)特別好玩的現(xiàn)象...

    Lemon_95 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<