環境:
windows Server 2008;Portal for ArcGIS 10.2;ArcGIS for Server 10.2;PostgreSQL 9.2;ArcGIS for Desktop 10.2;ArcSDE 10.2;Maps for Office;Office 2013
問題描述:
軟件配置完畢,服務正常,將A.shp文件打包成A.zip,上傳到portal中,出現中文字段亂碼問題。
問題排查與解決:
1)打開ArcMap加載服務,屬性表亂碼;但ArcMap加載原始未打包上傳的A.shp文件屬性表顯示正常,初步懷疑是服務問題;
2)打開SDE,加載剛剛導入的圖層,屬性表亂碼;
3)將未打包上傳的A.shp文件導入SDE后,加載到ArcMap里,屬性表顯示正常,證明SDE、PostgreSQL數據庫沒有問題;
4)其他人的樣例數據按以上操作均正常顯示,無亂碼;否定服務問題;
5)將其他人機器上的樣例數據B.shp拷貝到本機,重新打包上傳到portal,無亂碼,初步懷疑是A.shp數據問題;
6)將B.shp在ArcMap中加載,顯示無誤,用Export導出成另外的C.shp;
7)將C.shp重新打包上傳到portal,亂碼重現;初步否定A.shp問題,初步懷疑是系統本身字符集影響了shp文件編碼;
8)參考http://support.esri.com/en/knowledgebase/techarticles/detail/21106
9)ArcGIS默認通過讀取系統的代碼頁(CodePage)來確定文件編碼的(或者是根據操作系統語言來判斷的?)。要保存成Unicode(UTF-8)編碼,需要做一些修改。方法如下:
打開注冊表,定位到HKEY_Current_User\Software\ESRI\,添加 Common 項,在Common項下面新建 CodePage項。然后在CodePage項中(注冊表右側)添加一個字符串(REG_SZ),名稱: dbfDefault,健值:oem(或者UTF-8),如下圖。修改完注冊表之后,必須新建一個Shape文件或將已有的另存為(Export Data)新的Shape文件,才能讓前面的修改生效。
10)重新將A.shp、C.shp分別打包上傳到portal,亂碼消失!