解决ArcGIS10.5 乱码问题

in 技巧百宝箱 with 3 comments

问题简述

升级ArcGIS10.5后,部分文件属性表中文出现乱码。

出现原因

查阅资料,ArcGIS默认通过读取系统的代码页(CodePage)来确定文件编码的(或者是根据操作系统语言来判断的),中文系统一般采用GBK的编码方式,因此中文系统下,生成的shapefile文件都是以GBK来编码其中的字段属性的,如果dbf不是GBK编码就会出现乱码问题。
Arcgis10.2以后的版本经常会出现字段名及属性内容被截断的问题,甚至直接乱码。出现这种问题的根本原因是arcgis10.2之前shapeFile的dbase默认的编码格式是GBK,而更新的版本之后全部是默认UTF-8。shapeFile的字段名长度是限制在9个字符,GBK格式一个汉字占两个字符,这样可以存4个汉字,而UTF-8格式一个汉字占三个字符,所以只能存储三个汉字。所以大家经常看到被截断的字段名都是保留3个汉字。属性总的汉字乱码也是同理。
ArcGIS 10.2之后arcmap会先读取.cpg文件来判断文件的编码,如果没有.cpg文件,10.2之前的版本就会把系统的默认编码当做文件编码来用,10.1之后的会用utf编码去读取,而多数dbf的编码都是gpk编码,所以就会有乱码。可以增加一个.cpg文件,文件里面定义了dbf所使用的编码格式,如:GBK,GB2312,UTF-8等,一般来说你只要在cpg文件里面写GBK或GB2312,然后再用arcmap打开就不会有乱码的。

解决方法

官方给的建议是:使用支持统一码(unicode)的文件地理数据库(file geodatabase)保存文件,这样就避免乱码,不用修改注册表了。

注册表方法:

保存以下内容为注册表文件格式,双击写入注册表就可以了。注意替换arcgis版本为你所安装的版本号。

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\ESRI\Desktop10.5\Common]
[HKEY_CURRENT_USER\SOFTWARE\ESRI\Desktop10.5\Common\CodePage]
“dbfDefault”=”oem”

手动方法:
打开注册表,依次打开HKEY_CURRENT_USER\SOFTWARE\ESRI\Desktop10.5\,新建一个项Common,再新建一个项CodePage,新建一个键dbfDefault,修改键值为oem

问题解决。

参考链接:

  1. ARCGIS Shapfile字段中文字符显示不全乱码问题解决
  2. 解决ArcGIS10.3属性表中文乱码问题
  3. ArcGIS10.2,10.3,10.4,10.5_解决属性表中文乱码问题
  4. 解决ArcGIS10.3属性表中文乱码问题
The article has been posted for too long and comments have been automatically closed.
  1. iling

    打開註冊表,依次打開HKEY_CURRENT_USER\SOFTWARE\ESRI\ArcGISPro\, 新建一個項Common, 再新建一個項CodePage,新建一個鍵dbfDefault, 修改鍵值為oem。
    同樣可以解決PRO讀取中文亂碼的問題。

    1. @iling

      感谢!

  2. `win`+`R`,打开运行窗口,输入`regedit`