shapefile中的DBF文件使用哪种字符编码?


52

shapefile中的dbf文件使用哪种字符编码?根据程序和机器的本地编码设置,似乎处理方式有所不同。哪种编码是“正确”的-为格式指定的?


您应该明确将答案标志授予alfonx。@underdark没有冒犯!
JJD

Answers:


60

原始DBF标准定义使用ISO8859-1,并且仅使用ISO8859-1。因此,当您获得真正符合标准的Shapefile时,应为ISO8859-1。当然,这种(非常古老的)限制在当今并不是真正可用的。

ArcGIS和Geopublisher,AtlasStyler和Geoserver开始扩展标准以定义编码。例如,对于ArcGIS,只需创建一个.cpg文件(与其他Shapefile具有相同的基本名称),然后用编码名称填充即可。

例如,使用文本编辑器创建myshape.cpg,并插入5个字符“ UTF-8”并保存。如果然后在ArcGIS中打开Shapefile,它将读取该字符集中DBF的文本内容。

Geoserver:Geoserver WFS可以将任何WFS图层导出为压缩的Shapefile。完成此操作后,zip中将包含一个.cst文件,其与.cpg文件完全相同。

注意:所有这些仅适用于数据,不适用于列名。如果您希望文件可以用其他程序打开,则实际上只应在DBF的列名中使用ASCII。

提示:要更改DBF的编码,请使用OpenOffice Calc打开它。选择“另存为...”,单击左下方的“过滤器选项”,然后按保存。然后,您可以定义将文本内容转换为的编码。


3
很棒的帖子!如果人们将他们的shapefile与.cpg文件一起运送,那么世界将会是一个更好的地方。
黑暗

2
您是否有ISO8559-1字符集作为正式字符集的参考?我发现的DBF规格非常简短,没有提及。
克里斯(Chris

3
如果收到General input/output error,则可能未安装Base。无论使用OpenOffice还是LibreOffice,问题都是相同的。
JJD

2
+1表示OpenOffice / LibreOffice Calc提示。在那里,您可以确保DBF文件具有假定的编码。但是,正如JJD所指出的那样,在Ubuntu上也必须安装LibreOffice Base才能在Calc中打开DBF文件。
玛丽安2014年

1
一个.cpg文件应该在QGIS做工精细,也因为libgdal 1.9。有时甚至似乎是必要的:ssrebelious.wordpress.com/2012/03/11/...
krlmlr

11

我很确定没有“正确”的编码。.dbf文件可以采用任何编码,并且您可以打开Shapefile并正确读取属性。

您可以在此处找到ESRI白皮书:http : //www.esri.com/library/whitepapers/pdfs/shapefile.pdf

我通常希望shapefile是UTF-8或在所覆盖国家/地区的本地(通常是一些拉丁编码)。


7

每当我看到有关编码的问题时,我都会向人们推荐这篇文章:http : //www.joelonsoftware.com/articles/Unicode.html

如它所说:

不知道字符串使用什么编码就没有意义。您不能再将自己的头埋在沙子里,并假装“纯文本”为ASCII。


究竟!人们总是告诉我,我以错误的编码向他们发送了一个文件,这仅仅是因为编辑器(大多数情况下是np ++)会做出疯狂的猜测。+1
unicoletti

3

一种简单的方法是将shp文件转换为csv文件。并使用enca或iconv来检测编码。我尝试使用UTF8和gb18030文件,它可以正常工作。


为答案+1,以找出当前编码。我确实认为,尽管问题在寻找更多的标准编码(如果有)。
获得空间

这篇文章还讨论了如何检测编码的问题:gis.stackexchange.com/questions/12218/...
汤姆斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.