解决ArcGIS10.5 乱码问题
问题简述
升级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
。
问题解决。