ASCII/GBK/Unicode/UTF-8編碼問題

這是個很煩人的問題,看了幾篇文章都沒怎麼搞懂,但還是想記錄一下自己瞭解的東西。

 

ASCII碼:一個字節,即8位。分爲標準和不標準兩種,標準的最高位爲0,剩下7位共可以表示128種字符,美國夠用了;而後來流傳到歐洲國家就不夠用了,他們用上了最高位,兼容標準的ASCII,共256種。

GBK:中國爲了兼容中文而制定的編碼規則,兼容ASCII,用一個字節表示ASCII,用兩個字節表示中文。

Unicode:統一聯盟國際組織提出的爲了兼容世界上所有語言的編碼規則。但Unicode只規定了編碼,沒規定怎麼傳輸/保存編碼,如某個字符佔兩個字節,但當你拿到這兩個字節時你不知道這是兩個字節表示的一個字符還是說是兩個字符拼接在一起了。

UTF-8:Unicode的一種實現方式,就好像英語是國際通用語言,而各個國家再把英語翻譯成自己的語言。Unicode就像英語,而UTF-8就像翻譯出來的語言。UTF-8有特定的存儲方式,可以區分不同字節數的字符。

UTF-8/GBK---解碼-->Unicode;Unicode---編碼-->UTF-8/GBK

有時候用python處理表格什麼的時候,想把某些值轉成str會報錯說‘ascii codec can't encode characters in position。。。’

這是因爲str()默認是執行s.encode('ascii')的,因此若某些字符非ascii兼容的就會出錯,如u'你好',因此要手動s.encode('gbk')或s.encode('utf-8')。

遇到什麼問題我再在這裏記錄。

發佈了33 篇原創文章 · 獲贊 0 · 訪問量 9020
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章