前一段時間遇到一個客戶需要在ArcMap中批量的通過等高線圖生成DEM,但是等高線圖中的高程字段名稱全部是中文,大家都知道Python遇到中文就會出現各種詭異狀況,於是我被用戶找去解決問題。
先看看Python的版本,是2.6.5,比用戶的2.5.1要高,不知道這個問題能不能在自己電腦上重現。
好了,創建一個ChineseTest.py,內容如下:
測試一下,結果:
好吧,悲劇了,自己電腦上的版本比用戶高,沒法重現這個錯誤,只能到現場去解決了。
到用戶現場,用上面的同樣方式輸出“中文”兩個字,出現問題:
嗯,先把編碼方式換成Utf-8嘗試下:
錯誤依舊……
既然它提供了網址,那就看看吧。簡單地浏覽一下,終於知道如果文件裡有非ASCII字符,需要在第一行或第二行指定編碼聲明。把ChineseTest.py文件的編碼重新改為ANSI,並加上編碼聲明:
實驗結果出來了:
很好,成果喜人,接著就是用這個方式來代替我們在高程字段中使用的中文字符。
結果依然悲劇,報取不到這個字段(因為沒有用戶數據,無法在這裡給大家截圖看了)。