ArcGIS属性表编码问题

原文链接: http://support.esri.com/en/knowledgebase/techarticles/detail/21106

相关链接:http://blog.csdn.net/fidelhl/article/details/17318797

Technical ArticleHowTo:读写shapefile和数据库文件编码在不同的代码页

文章ID: 21106年
软件:  ArcGIS——ArcEditor 9.2,9.3,设备上装,10 ArcGIS——ArcInfo 9.2,9.3,设备上装,10 ArcGIS——ArcView 9.2,9.3,设备上装,10ArcGIS Server(10.0前) 10 ArcGIS桌面先进 10.1,10.2,10.2.1 ArcGIS桌面标准 10.1,10.2,10.2.1 ArcGIS桌面基本10.1,10.2,10.2.1 ArcGIS的服务器 10.2
平台:  窗户 Server 2003 XP,Vista服务器2003年,Windows 7,Windows 8,服务器2012 Server 2008 R2
总结
Esri公司实现了一个“代码页转换”功能在ArcGIS桌面(ArcMap、ArcCatalog ArcToolbox)允许桌面应用程序读写shapefile和数据库文件编码在不同的代码页。 数据库文件的代码页转换功能(称为“dbfDefault”)被激活通过指定一个代码页值在系统注册表。 这非常类似于&CODEPAGE函数用于ArcInfo工作站。 

ArcGIS 10.2.1之前,以下技术可用于设置所需的代码页行为。 

在每个shapefile的头(.DBF),包括一个引用代码页。 ArcGIS 10.2.1之前,所使用的代码页对应于用户的语言环境。 例如,如果用户在日本地区,使用的代码页。 DBF文件“Shft-JIS”。 

在ArcGIS 10.2.1,默认代码页设置为utf - 8(UNICODE)shapefile(.DBF)。 这是常数和当前的国际化实践应该确保数据可读。


“dbfDefault”设置是做什么的? 

通过设置一个代码页值在系统注册表,用户可以读取和写入shapefile和数据库文件编码的代码页。 例如,用户可以导出一个shapefile编码在OEM通过设置代码页注册表值OEM。 用户还可以读shapefile和数据库文件没有代码页信息存储在文件中,只要用户知道哪些代码页文件编码。 

为什么设置“dbfDefault”? 

当打开一个shapefile和数据库文件在ArcGIS桌面,桌面程序看看语言驱动程序ID(LDID)的头一个数据库文件,或一个关联的*。 中央文件,该文件用于定义代码页和帮助确定读文件的代码页。 基于代码页信息检索,ArcGIS的桌面显示相应的字符串通过执行一个代码页转换,如果它是必要的。 如果一个数据库文件缺乏LDID或。 中央文件,它假设文件编码在Windows(ANSI /多字节)代码页。 

如果桌面程序读取数据库文件编码在OEM但文件不包含任何代码页信息或没有LDID或。 中央文件,字符不正确显示。 这是因为桌面程序假设文件是ANSI编码的代码页,因为它找不到代码页的信息,而文件实际上是被编码在OEM。 这意味着ArcGIS对待OEM文件作为ANSI编码,导致一个不正确的8位字符存储在文件的显示。 

大多数shapefile和数据库文件应该有代码页信息存储在文件中。 一些项目,比如Microsoft Access 2000和Excel 2000、编码OEM数据库文件,但不包括LDID代码页的信息,所以ArcGIS不读正确的文件。 为了避免这个问题,用户可以设置dbfDefault之前适当的代码页打开一个文件,缺少代码页的信息。 

“dbfDefault”是如何工作的? 

“dbfDefault”设置在系统注册表定义的代码页shapefile文件和数据库文件导出。 shapefile文件和数据库的代码页创建在ArcGIS桌面编码由系统定义的代码页注册的“dbfDefault”价值。 例如,如果“dbfDefault”设置为OEM,shapefile ArcMap创建的数据库文件,在OEM ArcCatalog,ArcToolbox编码。 另外,如果“dbfDefault”设置为ANSI,shapefile ANSI编码和数据库文件。 

重要的是要注意,有一个例外:shapefile出口险ArcCatalog ArcToolbox,西班牙语和阿拉伯语以外的语言编码在OEM,不管dbfDefault设置。 这是因为“覆盖Shapefile”ArcToolbox使用ArcInfo工作站的功能,定义层运行在DOS,所以输出文件总是用OEM代码页编码或DOS代码页。 shapefile出口险ArcCatalog ArcToolbox,西班牙语和阿拉伯语是ANSI编码。 

▪shapefile输出从覆盖率ArcCatalog ArcToolbox总是在OEM代码页(西班牙除外)。 

同样的逻辑也适用于shapefile和数据库文件读入ArcGIS桌面;如果一个shapefile或缺乏LDID或数据库文件。 中央文件,ArcGIS假设文件编码dbfDefault定义的代码页。 例如,如果dbfDefault值设置为OEM和缺乏LDID和数据库文件。 中央文件,ArcGIS OEM桌面假设文件编码,因此执行一个代码页转换显示8位字符ArcMap和ArcCatalog(因为这两个应用程序使用ANSI的Windows程序代码页来显示字符串)。 

如果用户有dbfDefault值设置为特定的代码页,所有shapefile和数据库文件导出在ArcGIS编码的代码页。 所有shapefile和数据库文件,没有代码页信息假定的代码页。 因此,重要的是要设置dbfDefault值回其默认值(没有价值)当任务完成。


dbfDefault可用的程序是什么? 

ArcGIS的桌面是唯一程序dbfDefault设置的影响。 其他项目,如ArcInfo工作站和ArcView 3。 x,或其他代码页设置如“&CODEPAGE”功能用于ArcInfo工作站和ArcView 3中使用的代码页资料。 x,不受影响。 

在ArcInfo工作站, 

▪ARCSHAPE &CODEPAGE OEM创建一个shapefile OEM 
▪ARCSHAPE &CODEPAGE ANSI创建一个shapefile ANSI 
▪INFODBASE OEM &CODEPAGE OEM创建一个数据库文件 
▪INFODBASE ANSI &CODEPAGE ANSI创建一个数据库文件 

在ArcView 3. x, 

▪Shapefile和数据库文件保存在ANSI编码页。 

受dbfDefault的数据格式是什么? 

Shapefile和数据库文件是唯一可以使用的数据格式dbfDefault设置指定代码页。 其他数据格式,如保险和个人geodatabase,不受dbfDefault设置。 

在ArcGIS桌面(无论dbfDefault设置), 

▪个人geodatabases保存在Unicode 
▪个人geodatabase表保存在Unicode 
▪覆盖保存在ISO代码页 
▪信息文件是保存在ISO代码页 
▪交换文件保存在ANSI编码页 
▪文本文件保存在ANSI编码页

过程
指令提供了描述如何设置dbfDefault值在系统注册表。 下面列出了两种选择。 

选择一个 

1。 添加两个键称为“普通”和“代码页”在系统注册表。 


警告:下面的说明包括更改您的操作系统的重要部分。 建议您备份您的操作系统和文件,包括注册表,在继续之前。 商量一个合格的计算机系统专业,如果必要的。 

Esri公司不能保证结果不正确的修改而遵循这些指令;因此,使用谨慎和继续在你的自己的风险。


添加一个关键: 

打开注册表编辑器: 
点击开始>运行,输入“注册表编辑器”,然后单击OK。 

b。在注册表中树(在注册窗口的左窗格),去我的电脑软件\ \ HKEY_CURRENT_USER \ ESRI公司的,然后点击注册表键,“桌面10. x”。 (版本设备上装和早期版本,去“我的电脑软件\ HKEY_CURRENT_USER \”,并点击注册表键ESRI公司。) 

c。添加一个新的密钥称为“普通”(在编辑菜单: 
导航到新的选择键,类型名称“常见”,按回车)。 

d。点击刚刚创建的注册表键(常见),并添加一个新的密钥称为“代码页”。

2。 添加一个新的字符串值,dbfDefault,代码页的关键。 

添加一个字符串值: 

点击关键代码页。 
b。在“编辑”菜单上,导航到新的,并选择“字符串值”。 
c。类型“dbfDefault”为新值,并按下ENTER。 

新代码页的关键应该是这样的: 



[O-Image] Screenshot of dbfDefault in 

3。 输入一个代码页值。



。选择刚添加的条目,重要的是,选择dbfDefault而不是(默认)。 
b。在“编辑”菜单上,单击修改。 
c。在价值数据,输入新代码页值,并单击OK。 

下面列出的代码页支持标识符(这些不是大小写敏感)。 

OEM代码页标识符 
437年美国 
708 -阿拉伯语(ASMO 708) 
720 -阿拉伯语(透明ASMO)、阿拉伯语(DOS) 
737 -希腊,希腊(DOS) 
775 -波罗的海,波罗的海(DOS) 
850 -多语言拉丁语1、西欧(DOS) 
852 -拉丁2,中欧(DOS) 
855 -斯拉夫字母 
857 -土耳其,土耳其(DOS) 
860 -葡萄牙,葡萄牙(DOS) 
861 -冰岛,冰岛(DOS) 
862 -希伯来语,希伯来语(DOS) 
863 -法国加拿大法裔加拿大人(DOS) 
864 -阿拉伯语,阿拉伯语(864) 
865 -北欧北欧(DOS) 
866 -俄罗斯,西里尔(DOS) 
869 -现代希腊语,现代希腊(DOS) 
932年日本,日本(shift - jis) 
936 -中文(简体):中华人民共和国,新加坡 
949年韩国(统一韩语代码) 
950年的今天,中国传统:台湾、香港、中华人民共和国 
ALARABI——将代码页设置为448 

ANSI编码页标识符 
1250年中欧 
1251 -斯拉夫字母 
1252年西欧 
1253 -希腊 
1254年土耳其 
1255 -希伯来语 
1256 -阿拉伯语 
1257 -波罗的海的语言 
1258年越南 
Big5 -中国:台湾、香港、澳门 
SJIS-日本(代码页设置为932) 

ISO代码页标识符 
88591 -拉丁1:西欧 
88592 -拉丁2:中欧和东欧 
88593 -拉丁3:欧洲南部 
88594 -拉丁4:北欧 
88595 -斯拉夫字母 
88596 -阿拉伯语 
88597 -希腊 
88598 -希伯来语 
88599 -拉丁5:土耳其 
885910 -拉丁6:北欧 
885911 -泰国 
885913 -立陶宛 
885915 -拉丁9:西欧(升级从拉丁语1) 

Unicode值 
utf - 8代码页设置为65001 
use UTF8,代码页设置为65001 

shapefile现在可以存储在utf - 8。 然而,shapefile用utf - 8编码只承认在ArcGIS桌面。

选项B 

另外,使用以下批处理文件来修改Windows注册表。 

ChangeCodePage.bat

@ECHO OFF
IF "%1"=="" GOTO :EOF 
reg add HKEY_CURRENT_USER\Software\ESRI\Desktop10.3\Common\CodePage /v dbfDefault /t REG_SZ /d %1 /f


执行批处理文件,输入下面的线。 

ChangeCodePage SJIS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值