<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] 昨天博客訪問量超過20w了,很高興,也希望這些筆記和文章能夠真正幫到更多的人。對于一個做技術的人來說,分享真的會給自己帶來很多快樂。不過說來也很慚愧,最近兩個月都沒寫什么新的內容,一直忙于畢業設計和論文的事,也沒學什么新的東西。不過想到馬上要畢業將要踏上新的征程也是特別興奮的。 關于字符串編碼方面的內容很基礎,學了很多次還是記不住,每次要用的時候又去查找相關資料,很麻煩,這里做一個總結記錄一下,方便自己下一次查閱,也加深一下記憶(可能是擼多了,記憶力越來越差。。)。 ## **編碼** * * * 百度百科上對編碼和解碼的定義如下:編碼是用預先規定的方法將文字、數字或其他對象轉換成數碼的過程。解碼是編碼的逆向。? 這里我們不妨將人類可以很容易理解的消息作為“明文”,將人類不易懂但是更易于存儲和傳輸的消息作為“密文”。那么編碼和解碼的關系如下:? ![這里寫圖片描述](http://img.blog.csdn.net/20160505202852554) 因為計算機只能識別0和1,我們人類易于理解的那些符號數字沒辦法直接存儲到計算機中,必須先將這些符號按照事先規定的方式編碼成0/1串才能存儲到計算機或者通過網絡進行傳輸。當我們從硬盤或者網絡中讀取文件時,我們讀取到的內容全是0/1串,需要將這些內容按照一定的方式解碼成我們易于理解的明文,然后才能查看或進行相關的處理。 編碼有一個必要條件是編碼的過程不能丟失任何信息,我們能夠從密文解碼出和原文完全一樣的內容。 ## **編碼方式** * * * 將明文編碼成密文需要按照一定的編碼方式,編碼方式多種多樣,分別對應于不同的字符集。 #### **ASCII** 上個世紀60年代,美國制定了一套字符編碼,對英語字符與二進制位之間的關系,做了統一規定。這被稱為ASCII碼,一直沿用至今。? ASCII碼一共規定了128個字符的編碼,比如空格”SPACE”是32(二進制00100000),大寫的字母A是65(二進制01000001)。這128個符號(包括32個不能打印出來的控制符號),只占用了一個字節的后面7位,最前面的1位統一規定為0。 #### **其他編碼** 對于英語來說128個字符就已經夠用了,但是對于其他語言來說卻不夠。因此針對不同的語言先后出現了多種編碼方式,例如針對中文的GB2312和GBK編碼,針對中文繁體的Big5編碼等等,這些編碼方式都使用多個字節表示一個字符。 #### **Unicode** 隨著越來越多的編碼方式的出現,急需一種能夠包含全世界所有符號的編碼系統來消滅亂碼,這種編碼系統就叫做Unicode。Unicode只是一套編碼系統,包含所有字符集,卻并不規定編碼后的二進制代碼如何存儲。 UTF-32使用4個字節存儲每一個字符,但是對于英文字符來說,使用ASCII編碼只需1個字節即可存儲,這極大的浪費了存儲空間。? 因此出現了一種變長的編碼方式UTF-8,UTF-8是使用得最廣泛的Unicode編碼實現方式,使用1-4個字節表示一個字符,根據不同的字符變化長度。比如對于英文字符,1個字節就夠了,但是對于中文,可能需要2-4個字節才能存儲。 #### **Base64** Base64是網絡上最常見的用于傳輸8Bit字節代碼的編碼方式,可用于在HTTP環境下傳遞較長的標識信息。采用Base64編碼具有不可讀性,可用作簡單的加密方式。 ## **Python 3編碼** * * * 以前用Python 2,每次使用中文就會碰到各種編碼問題,但是Python 3使得字符串編碼變得非常簡單。 我們可以通過以下代碼查看Python 3的字符串默認編碼: ~~~ import sys sys.getdefaultencoding() ~~~ Python 3的默認編碼方式是UTF-8。 使用Python解釋器進行如下編碼解碼操作,在bytes和str之間轉換: ~~~ >>> '中'.encode() b'\xe4\xb8\xad' >>> b'\xe4\xb8\xad'.decode('utf-8') '中' ~~~ 我們在使用Python以二進制的形式寫入文件時,需要先將字符串編碼成字節串,然后再寫入文件。以二進制的形式讀取文件時也是如此,需要將讀取的字節串解碼成字符串。 * * * 參考文檔:? 1.?[字符編碼筆記:ASCII,Unicode和UTF-8](http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html)? 2.?[Python 3的bytes/str之別](http://www.ituring.com.cn/article/1116)? 3.?[Python3的編碼問題](http://blog.sina.com.cn/s/blog_6d7cf9e50102vo90.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看