问题简述
升级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
。
问题解决。
参考链接:
- ARCGIS Shapfile字段中文字符显示不全乱码问题解决
- 解决ArcGIS10.3属性表中文乱码问题
- ArcGIS10.2,10.3,10.4,10.5_解决属性表中文乱码问题
- 解决ArcGIS10.3属性表中文乱码问题
本文由 XieWei 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
打開註冊表,依次打開HKEY_CURRENT_USER\SOFTWARE\ESRI\ArcGISPro\, 新建一個項Common, 再新建一個項CodePage,新建一個鍵dbfDefault, 修改鍵值為oem。
同樣可以解決PRO讀取中文亂碼的問題。
感谢!
`win`+`R`,打开运行窗口,输入`regedit`