有没有一种方法可以确定用于给定shapefile的字符集?

#1 楼

反复试验。尝试使用Ms Excel或OpenOffice使用不同的设置打开.dbf文件,直到一切正确为止。

查看此帖子以获取更多线索:https://stackoverflow.com/questions/319095/如何确定字符串的字符集

评论


如果对编码一无所知,则值得首先尝试使用latin1或UTF-8。

– krlmlr
15年3月29日在16:00

我已经在MS Excel中打开.dbf,并且字符正常显示。如何查看Excel正在使用/检测的编码?这样我就可以在QGIS中进行设置...

–user3386170
18年5月24日在18:36

#2 楼

程序可以使用两种方法来确定shapefile的字符集。


第一种是代码页文件* .cpg。
第二种是代码页信息,可以在dbase文件中。可以在http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT


找到该规范

评论


+1指向dBase文件格式页面的链接很棒。但是,对于AFAIK,代码页从未包含在dBase III格式中。此处提到的是FoxPro格式的扩展名,该扩展名表明并非所有.dbf文件都将在其中包含代码页信息(或者,如果这样做,可能是由于在标头的可用区域中出现了垃圾字节) )。但是,如果您可以挖掘出这些信息,那仍然是一个反复试验搜索的好开始。顺便说一句,欢迎来到我们的网站!

– hu
2011年7月20日在13:33



如果有信息,某些python dbf库可以读取代码页。

– Paulo Scardine
2012年8月6日19:19

#3 楼

file实用程序能够猜测文本文件的编码。如果没有ogr2ogr文件,请使用.cpg进行转换以保留原始编码:

ogr2ogr -f CSV file.csv file.dbf
file file.csv


示例输出:

file.csv: ISO-8859 text


我已经使用两种最常见的编码UTF-8和latin1对它进行了测试。在Ubuntu上可以直接使用,不确定OSX。我不知道Windows上的file实用程序。 .cpg将兑现它,并且输出将为UTF-8。但是,如果CSV输出看起来正确,则说明您知道ogr2ogr文件中的信息是准确的。

#4 楼

另一个将* .dbf的第29个字节转换为代码页的表:
http://webhelp.esri.com/arcpad/8.0/referenceguide/index.htm#locales/task_code.htm