shapefile中的dbf文件使用哪种字符编码?根据程序和机器的本地编码设置,似乎处理方式有所不同。

指定哪种编码是“正确”的?

评论

您绝对应该将答案标记授予alfonz。 @underdark没有进攻!

#1 楼

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

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

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

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

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

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

评论


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

– Underdark♦
2010年11月19日,9:54

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

–克里斯
2012年6月22日17:05



如果收到常规输入/输出错误,则可能未安装Base。无论您使用的是OpenOffice还是LibreOffice,问题都是相同的。

– JJD
2012年7月28日在19:08

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

–玛丽安
2014年1月21日在8:36

从libgdal 1.9开始,.cpg文件在QGIS中也应该可以正常工作。有时甚至似乎有必要:ssrebelious.wordpress.com/2012/03/11/…

– krlmlr
15年3月29日在15:44

#2 楼

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

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

我通常希望shapefile能够可以是UTF-8,也可以是所覆盖国家/地区的本地语言(通常是一些拉丁编码)。

#3 楼

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

它说:


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


评论


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

– Unicoletti
2012年7月24日在18:02

#4 楼

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

评论


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

–获得空间
2012年10月10日21:32

这篇文章还解决了如何检测编码的问题:gis.stackexchange.com/questions/12218/…

–toms
2014年4月2日在17:09