ArcMap中使用Python遇到中文欄位名錯誤的解決方案

來源:互聯網
上載者:User

前一段時間遇到一個客戶需要在ArcMap中批量的通過等高線圖產生DEM,但是等高線圖中的高程欄位名稱全部是中文,大家都知道Python遇到中文就會出現各種詭異狀況,於是我被使用者找去解決問題。

先看看Python的版本,是2.6.5,比使用者的2.5.1要高,不知道這個問題能不能在自己電腦上重現。

好了,建立一個ChineseTest.py,內容如下:

測試一下,結果:

好吧,悲劇了,自己電腦上的版本比使用者高,沒法重現這個錯誤,只能到現場去解決了。

到使用者現場,用上面的同樣方式輸出“中文”兩個字,出現問題:

嗯,先把編碼方式換成Utf-8嘗試下:

錯誤依舊……

 

既然它提供了網址,那就看看吧。簡單地瀏覽一下,終於知道如果檔案裡有非ASCII字元,需要在第一行或第二行指定編碼聲明。把ChineseTest.py檔案的編碼重新改為ANSI,並加上編碼聲明:

實驗結果出來了:

很好,成果喜人,接著就是用這個方式來代替我們在高程欄位中使用的中文字元。

結果依然悲劇,報取不到這個欄位(因為沒有使用者資料,無法在這裡給大家看了)。

鼓搗了好長時間,依舊是這個問題,沒有任何進展。我只能建議使用者先把欄位中的中文,改成英文別名,這樣就OK了,理論上確實可行,但是使用者有9000多個shp檔案,改完都成仙了~~

繼續研究,終於發現最終的解決辦法需要先修改編碼方式,再將中文欄位轉換成unicode就可以識別了。

總結一下,解決方案是:

開頭加上

#coding = gbk

之後將需要讀取的中文欄位名稱轉換為unicode,轉換方法為:

s = “ 中文”

st = unicode(s,"gb2312")

這樣就能安全的使用這些欄位名了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.