在早期我们在数据处理时,我们生成的shp文件的编码默认都为cp936或者gb2312等编码,采用该编码时,支持中文不乱码,属性字段名称可以采用10个字符或者5个汉字。大家常用的ARCGIS软件中,自10.2版本后,默认采用UTF-8编码,如果需要采用CP936编码,需要修改注册表等,具体可参考《ARCGIS高版本SHP文件属性字段名称只能使用三个汉字的解决方案》。
在实际工作中,不同的软件对shp文件的编码支持不完全一致,有时候需要实现不同shp文件编码方式之间的显示转换,目前在QGIS软件中可以很方便的实现该功能,只需正确打开shp文件后,在保存的时候设置所需要的编码方式就可以实现编码的转换,具体可参考《QGIS中解决SHP文件属性乱码的方法》。
尽管在ARCGIS或者QGIS软件中都可以实现shp文件编码方式的转换,但如果只是转换一下shp文件的编码就需要安装体系庞大的GIS软件还是有点麻烦,本文介绍一下基于ogr2ogr工具,可以借助该工具实现该功能。
一、ogr2ogr工具安装。该工具的安装比较简单,只要安装GDAL后,自动会包含该工具,GDAL的安装可以参考《GDAL的安装与使用》。正常安装后可以发现已经编译好ogr2ogr工具。
二、启动ogr2ogr。双击“SDKShell.bat”文件,自动进去控制台命令行操作界面。自动设置好运行相关工具所需要的环境变量等。
三、编码转换。在操作命令行输入 “ogr2ogr -f "ESRI Shapefile" -lco encoding=936 +转换后shp文件 +需要转换的shp文件”。转换后的编码如果设置为“encoding=utf-8”表明输出的shp文件采用utf-8编码,参数设置为"encoding=936"表明输出的shp文件的编码方式采用cp936。下面的例子表明将110106.shp文件的编码转换为cp936,转换后结果输出为110106_936.shp文件。