中文

问题:ArcGIS 10.2.x 中导出的 shapefile 具有截断的字符串

说明

对于某些语言区域设置,在 ArcGIS for Desktop 10.2.1 和 10.2.2 中创建 shapefile 时会出现此问题。

此问题可能会导致属性表字段名和字段值被截断,并抛出如下错误:

“无法将字段添加到表/要素类。 字段类型对于该操作无效或不受支持。”

此问题与以下 NIM 有关:

• NIM100355 - 添加日语字符作为 shapefile 的字段名会生成错误:“无法将字段添加到表/要素类。 字段类型对于该操作无效或不受支持”。

• NIM100357 - 在注册表中设置代码页未正确更改创建时 shapefile 所使用的代码页。

• NIM098820 - 在 10.2 版本中创建了 shapefile,然后在 10.2.1 版本中使用和导出了此 shapefile,由此会导致最后一个字段中丢失属性值。

原因

在 ArcGIS 10.2.1 之前版本中,会以创建 shapefile 的系统的语言区域设置对其进行编码。 自 10.2.1 版本起,将始终以 UTF-8 对 shapefile 进行编码,这对于使用多字节字符编码(例如中文、日文或俄文)的系统存在问题。

出现此问题的原因在于 shapefile 的字符串长度以字节为单位,而非字符。 因此,UTF-8 对 shapefile 字段名的长度限制 10 个字符实际上为 10 个字节。

例如,由于日语字符的每个字符需要 3 个字节,因此这会将 shapefile 字段名的长度限制减少为 3 个字符。 另一个问题是文本字段。 定义为 3 个字节的文本字段只能容纳 1 个字符。 这意味着从日语 (SJIS) 导出到 UTF-8 的数据,其文本字段值中可能会出现截断。 将报告截断,并且每个字符串都将添加一个星号 (*)。

解决方案或解决方法

  1. 针对 ArcGIS for Desktop 的本地版本,下载并安装相应的代码页修补程序:

    ArcGIS 10.2.1 for (Desktop, Engine, Server) 设置 Shapefile 默认代码页修补程序

    ArcGIS 10.2.2 for (Desktop, Engine, Server) 设置 Shapefile 默认代码页修补程序

  2. 请按照知识库文章 21106 中的说明进行操作,操作方法:读写在不同代码页编码的 shapefile 和 dBASE 文件

相关信息