logo
Loading...

讀取檔案出現unknown encoding: cp0錯誤 - Cupoy

在我輸入程式碼:import sys reload(sys) sys.setdefaultencod...

讀取檔案出現unknown encoding: cp0錯誤

2019/09/01 下午 02:38
機器學習共學討論版
王振宇
觀看數:331
回答數:2
收藏數:0

在我輸入程式碼:

import sys 

reload(sys) 

sys.setdefaultencoding('utf-8') 

import geopandas as gpd 

fn = r'C:\Users\王振宇\Downloads\mapdata201810161155\20172\20172臺灣海岸線.shp' 

gdf_Rail=gpd.read_file(fn,encoding='utf-8') gdf_Rail


之後得到了以下錯誤:

unknown encoding: cp0


再請專家們幫小弟解惑,感謝!

回答列表

  • 2019/09/01 下午 05:02
    陳明佑 (Ming You Chen)
    贊同數:0
    不贊同數:0
    留言數:1

    中文資料要載入時, 常常會碰到這種困難

    這裡的錯誤就告訴你 : 你的這個檔案原本編碼時不是用 utf-8 編碼的, 所以無法解碼

    這時候往往就要嘗試很多編碼方法, 沒有一定的做法


    如果是自己產生的編碼(比方說從windows產生), 就可以用big5先解碼看看

    如果是別人匯出的檔案的話...因為對方作業系統或者中文編碼不同...沒有固定解法

    連我們自己處理時也會覺得很麻煩, 因此匯出匯入時, 都會盡量避開中文

  • 2019/09/01 下午 06:46
    張維元 (WeiYuan)
    贊同數:1
    不贊同數:0
    留言數:0

    嗨,這個部分是讀檔的時候預設的編碼方式跟實際內容不同導致的錯誤。有可能是作業系統環境的差異導致。不管你是用 Python 原生的 open/read 或是 Pandas 提供的 read_csv 方法,都可以再開檔的時候指定 encoding 參數。


    假設要使用 utf-8 編碼方式存取檔案,使用方法如下:


    ```

    encoding = 'utf-8'  

    # 法一  

    f =open('filename.txt','r', encoding=encoding)  

    text = f.read() 

    f.close()  


    # 法二 

    df = pd.read_csv('filename.csv',encoding=encoding)  

    ```


    另外一種常見的問題是,可能不知道原始檔案的編碼方式為何,可以透過 chardet 工具來查詢:


    ```

    import chardet 

    with open('filename.txt','rb') as f:  

      result = chardet.detect(f.read()) 

    ```



    最後科普一下幾種常見的編碼格式:


    * Unicode/UTF8:萬國碼,可支援多種語言的編碼格式

    * ISO-8859-1/latin1:主要用於歐系國家的文字

    * Big5:繁體中文

    * GBK:簡體中文

    * cp950:windows 預設的編碼