文章目錄
- 尋找同道
- 問題解決專欄
- 有哪些常用編碼集?
- pycharm一勞永逸大法
尋找同道
運行代碼的時候,最煩的就是代碼邏輯都好好的,然后出現了編解碼錯誤的報錯,
我就納悶兒了,我就做個測驗,你錯誤就錯誤唄,你倒是跟我說這個邏輯行不行得通啊,我才不想管你是不是解不了碼,
一怒之下,我決定寫這么一篇博客,紀錄一下每次遇到的不同的編解碼問題,以及這一切的背后,到底是什么在搗鬼,
大家有這方面的困惑或者經驗都可以打在評論區,我們一起討論討論、
之后我再整理進這篇文章中,
所以可以先收藏一下,早晚用得上,
問題解決專欄
1、我遇到了這么一個問題:
UnicodeEncodeError: 'gbk' codec can't encode character '\xb6' in position 3264: illegal multibyte sequence
這個問題經常性的遇到啊,
于是就有了以下解決方案:
- 方案一:
在文章開頭處寫上:#coding:utf-8
這行的意思是:告訴解釋器,我這段代碼所涉及到的一切資料都是由utf-8編碼的,你到時候就用utf-8給我解碼就行了,
本來呢,這是個比較好的方法,也屢試不爽,但是今天它還就失敗了,
于是就有了方案二,
- 方案二:
代碼里加上這一行,再把確實的模塊包進來,也是屢試不爽,
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gbk') # 改變標準輸出的默認編碼
- 方案三:
在函式呼叫中加上“encoding = ‘utf-8’”,但是呢,由于不是所有函式都支持這個引數,所以就看運氣、
那么我們該如何應對這突如其來的編碼事故?方法一如果不奏效,你讓我被方法二的代碼?顯然不現實,那怎么辦,打開我這篇博客?浪不浪費時間,
我想,從編輯器或者解釋器出發,徹底解放這個問題!!!
有哪些常用編碼集?
ANSI編碼:
沒聽說過吧,我也沒聽說過,但是之前用R語言做時間序列分析的時候被這個編碼集坑慘了,
具體記不得了,解決方法有:將檔案用文本編輯器打開,另存的時候選擇編碼集,選‘utf-8’,
ASCII碼:
這個就不陌生了吧?在ANSI的基礎上進行了修改,把所有的空格、標點符號、數字、大小寫字母分別用連續的位元組狀態表示,一直編到了第127號,這樣計算機就可以用不同位元組來存盤英語的文字了,
GB2312:
GB2312 是對 ASCII 的中文擴展,
規定:一個小于127的字符的意義與原來相同,但兩個大于127的字符連在一起時,就表示一個漢字,前面的一個位元組(稱之為高位元組)從0xA1用到0xF7,后面一個位元組(低位元組)從0xA1到0xFE,這樣我們就可以組合出大約7000多個簡體漢字了,
在這些編碼里,我們還把數學符號、羅馬希臘的字母、日文的假名們都編進去了,連在 ASCII 里本來就有的數字、標點、字母都統統重新編了兩個位元組長的編碼,這就是常說的“全角”字符,而原來在127號以下的那些就叫"半角"字符了,于是就把這種漢字方案叫做 “GB2312”,
GBK:
漢字太多了,上面那個很快就被發現了局限性,
那怎么辦?再加唄,
擴展之后的編碼方案被稱為 GBK 標準,GBK 包括了 GB2312 的所有內容,同時又增加了近20000個新的漢字(包括繁體字)和符號,
GB18030:
后來少數民族也要用電腦了,于是我們再擴展,又加了幾千個新的少數民族的字,GBK 擴成了 GB18030,
在這個標準里,最大的特點是兩位元組長的漢字字符和一位元組長的英文字符并存于同一套編碼方案里,因此他們寫的程式為了支持中文處理,必須要注意字串里的每一個位元組的值,如果這個值是大于127的,那么就認為一個雙位元組字符集里的字符出現了,
UNICODE編碼:
當時各個國家都像中國這樣搞出一套自己的編碼標準,結果互相之間誰也不懂誰的編碼,誰也不支持別人的編碼,
一個叫 ISO (國際標誰化組織)的國際組織決定著手解決這個問題,他們采用的方法很簡單:廢了所有的地區性編碼方案,重新搞一個包括了地球上所有文化、所有字母和符號的編碼!他們打算叫它 UCS, 俗稱 UNICODE,
無論是半角的英文字母,還是全角的漢字,它們都是統一的“一個字符”!同時,也都是統一的“兩個位元組”
UTF-8和UTF-16:
UNICODE 來到時,一起到來的還有計算機網路的興起,UNICODE 如何在網路上傳輸也是一個必須考慮的問題,于是面向傳輸的眾多 UTF(UCS Transfer Format)標準出現了,顧名思義,UTF8就是每次8個位傳輸資料,而UTF16就是每次16個位,
pycharm一勞永逸大法
好了,不講那么多廢話了,放大招吧:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279252.html
標籤:其他
