ArcGIS读取DBF属性表中文乱码

环境win10,ArcGIS desktop 10.2

        再ArcGis中打开dbf文件时,表中的中文显示为乱码了。百度找了好多资料,得知使用 ArcGIS for Desktop 打开 dBase 表文件时,程序先去读头文件中的 Language Driver ID (LDID) 或者是同名 *.CPG文件。前面二者都是用来在读文件之前,决定用什么编码类型来正确读出文件。如果有必要, ArcGIS for Desktop 会进行编码转换来显示字符串。
       如果文件缺失 LDID 或者 .CPG 文件,编码就会被假定为 Windows (ANSI/Multi-byte)。也是因为这个原因,如果文件是 OEM 编码的,并且没有写入 LDID 或者 .CPG,字符就会出现乱码。 也就说 ArcGIS 把 OEM 文件当成 ANSI 文件来处理了。 多数情况下, shapefiles 和 dBASE 文件都会存储编码页信息。查看本地文件确实没有cpg编码文件。

解决方案一:

创建一个dbf同名的cpg文件写入编码方式UTF-8。

解决方案二:

在 ArcGIS Desktop (ArcMap, ArcCatalog, and ArcToolbox) 中,有编码页转换功能(CODE PAGE CONVERSION),可以读写多种字符编码的 shapefile 和 dBASE 表。在系统注册表中,编码页转换功能(CODE PAGE CONVERSION)命名为 'dbfDefault',可以修改这个值。设置dbfDefault,参考文章:https://support.esri.com/zh-cn/technical-article/000013192

修改注册表值——打开命令窗口执行 reg add HKEY_CURRENT_USER\Software\ESRI\Desktop10.2\Common\CodePage /v dbfDefault /t REG_SZ /d UTF-8 /f

网上也有很多是这样改的:reg add HKEY_CURRENT_USER\Software\ESRI\Desktop10.2\Common\CodePage /v dbfDefault /t REG_SZ /d 936 /f    (不知道为什么我电脑上不行)

Shapefile 和 dBASE 文件是唯一可供 dbfDefault 设置用于指定代码页的数据格式。 其他数据格式,例如 coverage 和个人地理数据库,不会受到 dbfDefault 设置的影响。

猜你喜欢

转载自blog.csdn.net/qq_33459369/article/details/83515478