文本文件乱码问题及解决方案
文本文件乱码问题及解决方案
GIS数据处理过程中,经常会遇到.csv类型的文件,有时经常发现里面的汉字是乱码,这个情况下怎么办呢?有什么办法能够正确的打开csv文件呢?下面就这个问题介绍几个简单的方法。
乱码问题的原因
乱码,主要是由于汉字在系统中的编码和在GIS软件中使用的编码不匹配。在ArcGIS属性表和互联网文件中,多使用UTF-8编码,而我们常用的windows系统中则一般使用的是ANSI编码,具体编码有啥区别我也不太清楚,感兴趣的同学可以自行百度了解。
由于ANSI说windows的系统编码和UTF-8汉字编码情况不一样,所以当我们直接使用EXCEL打开CSV文件时,就会出现乱码情况。
如何让EXCEL能正确读取GIS导出的属性表
导出EXCEL格式
使用ArcGIS的Table to Excel工具,可以将GIS属性表正确导出,导出数据可以直接EXCEL打开,没有乱码。
文本编辑器改CSV编码
EXCEL有行数限制,对于大数据量的GIS数据库表,xlsx格式超百万行后就不支持了,还是需要使用CSV格式,这个情况下怎么办?
这个时候就需要改CSV文件的编码。使用NOTEPAD++或者其它带编码转换功能的文本编辑器软件,将编码转为ANSI编码即可。
其它处理乱码的方法
出现乱码的文件还可以用QGIS或者R语言、Python等等编程的方法读取,下面介绍一下QGIS和R语言的读取和转换方法。
QGIS
QGIS是一个神器,不仅支持大数据量,而且支持众多编码。只要你内存够,CSV肯定打得开。
QGIS导入文本文件,默认的是system编码。
由于QGIS认为的编码和数据实际编码不一致,就会发生乱码。
只需在QGIS图层属性中,将Data Source Encoding改为UTF-8即可正确读取。
如果想用EXCEL打开的话,把数据导出,导出的时候编码选择system即可,再打开导出后的csv,就是正确的编码了。
R语言读取
使用R语言读取,选择UTF-8编码,输出选择GBK,也可以让输出后的csv文件可以由EXCEL打开。
River <- read.csv(file = "River.csv",header =T, encoding = "UTF-8")
write.csv(River, file = "River2.csv", fileEncoding="GBK")