摘要:,,等屬于不同的字符集,轉換編碼就是在它們中的任意兩者間進行。一般個人用的電腦上控制臺基本上都是編碼的,但運維的機器上基本全是,中文的時候就會有酸爽的問題。
總結總結,本文僅適用于python2.x
默認編碼與開頭聲明首先是開頭的地方聲明編碼
# coding: utf8
這個東西的用處是聲明文件編碼為utf8(要寫在前兩行內),不然文件里如果有中文,比如
a = "美麗" b = u"美麗"
中任何一種,運行前就會提示你SyntaxError,Non-ASCII character... 之類,因為python2.x的文件編碼默認使用萬惡的ascii
開頭加上那句默認編碼聲明就會變成utf8,獲取當前的默認編碼
sys.getdefaultencoding()unicode與utf8
在python中,使用unicode類型作為編碼的基礎類型,編解碼要以其為中間形式過渡,即進行str和unicode之間的轉換。
解碼然后再編碼的過程,即str->unicode->str的過程。中間得到的叫做unicode對象
這里需要強調的是unicode是一種字符編碼方法,是 “與存儲無關的表示”,而utf8是一種以unicode進行編碼的計算機二進制表示,或者說傳輸規范。gbk,gb2312,gb18030, utf8等屬于不同的字符集,轉換編碼就是在它們中的任意兩者間進行。
具體過程具體的轉換,比如直接將一個字符串encode成另一種字符集表示,注意此處是字符串,即type為str的,引號前沒有加u前綴的
# coding: utf8 s="美麗" s.encode("gbk")
則實際上會先以默認編碼進行decode,即decode("ascii"),開頭聲明了utf8,s的編碼就是utf8,ascii解碼不了utf8的字符會報錯。那就改默認編碼,
# coding: utf8 import sys reload(sys) sys.setdefaultencoding("utf-8") s="美麗" s.encode("gbk")
這樣把默認編碼改成utf8,decode的時候就以默認編碼utf8來進行,能夠成功運行
或者decode時指定類型,
# coding: utf8 import sys s="美麗" s.decode("utf8").encode("gbk")
對于type為unicode的,即加了u前綴的字符串,如上所說,直接encode即可
# coding: utf8 import sys s = u"美麗" s.encode("gbk")控制臺的編碼
這又是另一個讓人困惑的地方——控制臺的編碼導致的亂碼問題甚至是報錯。一般個人用的電腦上控制臺基本上都是utf8編碼的,但運維的機器上基本全是ascii,print中文的時候就會有酸爽的問題。亂碼問題一般發生在windows下面,因為那個編碼的字符集很與眾不同。所以當以正確方式編解碼以后,還是出現問題,那問題很可能就出在控制臺上了
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37662.html
摘要:筆者在編碼詳解與中編碼實踐一文中介紹了中編碼相關的基礎知識,其中沒有介紹純粹的編解碼方案,筆者后來根據網上的代碼完善了下這個庫,并且對中三種不同的編解碼方案進行了比較。 Isomorphic Urlencode Here is English Version For README 筆者在URL編碼詳解與DOM中GBK編碼實踐一文中介紹了JavaScript中URL編碼相關的基礎知識,其...
摘要:計算機中以字節為單位存儲和解釋信息,規定一個字節由八個二進制位構成,即個字節等于個比特。需要注意協議規定網絡字節序為大端字節序。以元組形式返回全部分組截獲的字符串。返回指定的組截獲的子串在中的結束索引子串最后一個字符的索引。 導語:本文章記錄了本人在學習Python基礎之數據結構篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本章重點: 1、了解字符字節等概...
摘要:字符編碼表,碼位碼元將編碼字符集中的碼位轉換成有限比特長度的整型值的序列。字符編碼方案,碼元序列化也稱為常說的序列化。每個字節里的二進制數就是字節序列。另一個情況則是壓縮字節序列的值,如或進程長度編碼等無損壓縮技術。 《流暢的Python》筆記。本篇主要講述不同編碼之間的轉換問題,比較繁雜,如果平時處理文本不多,或者語言比較單一,沒有多語言文本處理的需求,則可以略過此篇。 1. 前言 ...
摘要:是一個面向字節流的協議,它是性質是流式的,所以它并沒有分段。可基于分隔符解決。編解碼的主要目的就是為了可以編碼成字節流用于在網絡中傳輸持久化存儲。 showImg(https://segmentfault.com/img/remote/1460000015895049); 前言 記得前段時間我們生產上的一個網關出現了故障。 這個網關邏輯非常簡單,就是接收客戶端的請求然后解析報文最后發送...
摘要:關于解決亂碼問題的終極解決方案有個特別好玩的現象,當我們為了編碼頭疼的時候,幾乎搜索到所有的文章都會先發一通牢騷。另外,關于的亂碼問題,又是一個新的較長篇章。 關于解決Python亂碼問題的終極解決方案 (TL;DR) showImg(https://segmentfault.com/img/remote/1460000013229494?w=809&h=184); 有個特別好玩的現象...
閱讀 2585·2021-11-22 12:01
閱讀 1111·2021-11-15 11:37
閱讀 3692·2021-09-22 14:59
閱讀 1755·2021-09-04 16:45
閱讀 1387·2021-09-03 10:30
閱讀 1019·2021-08-11 11:18
閱讀 2465·2019-08-30 10:53
閱讀 2018·2019-08-29 15:13