原文链接: http://support.esri.com/en/knowledgebase/techarticles/detail/21106
相关链接:http://blog.csdn.net/fidelhl/article/details/17318797
HowTo:读写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之前,以下技术可用于设置所需的代码页行为。
“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可用的程序是什么?
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编码页
ArcGIS 10.2.1之前,以下技术可用于设置所需的代码页行为。
在每个shapefile的头(.DBF),包括一个引用代码页。 ArcGIS 10.2.1之前,所使用的代码页对应于用户的语言环境。 例如,如果用户在日本地区,使用的代码页。 DBF文件“Shft-JIS”。
在ArcGIS 10.2.1,默认代码页设置为utf - 8(UNICODE)shapefile(.DBF)。 这是常数和当前的国际化实践应该确保数据可读。
在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值在系统注册表。 下面列出了两种选择。
。选择刚添加的条目,重要的是,选择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
执行批处理文件,输入下面的线。
选择一个
1。 添加两个键称为“普通”和“代码页”在系统注册表。
警告:下面的说明包括更改您的操作系统的重要部分。 建议您备份您的操作系统和文件,包括注册表,在继续之前。 商量一个合格的计算机系统专业,如果必要的。
Esri公司不能保证结果不正确的修改而遵循这些指令;因此,使用谨慎和继续在你的自己的风险。
Esri公司不能保证结果不正确的修改而遵循这些指令;因此,使用谨慎和继续在你的自己的风险。
添加一个关键:
打开注册表编辑器:
点击开始>运行,输入“注册表编辑器”,然后单击OK。
b。在注册表中树(在注册窗口的左窗格),去我的电脑软件\ \ HKEY_CURRENT_USER \ ESRI公司的,然后点击注册表键,“桌面10. x”。 (版本设备上装和早期版本,去“我的电脑软件\ HKEY_CURRENT_USER \”,并点击注册表键ESRI公司。)
c。添加一个新的密钥称为“普通”(在编辑菜单:
导航到新的选择键,类型名称“常见”,按回车)。
d。点击刚刚创建的注册表键(常见),并添加一个新的密钥称为“代码页”。
打开注册表编辑器:
点击开始>运行,输入“注册表编辑器”,然后单击OK。
b。在注册表中树(在注册窗口的左窗格),去我的电脑软件\ \ HKEY_CURRENT_USER \ ESRI公司的,然后点击注册表键,“桌面10. x”。 (版本设备上装和早期版本,去“我的电脑软件\ HKEY_CURRENT_USER \”,并点击注册表键ESRI公司。)
c。添加一个新的密钥称为“普通”(在编辑菜单:
导航到新的选择键,类型名称“常见”,按回车)。
d。点击刚刚创建的注册表键(常见),并添加一个新的密钥称为“代码页”。
2。 添加一个新的字符串值,dbfDefault,代码页的关键。
添加一个字符串值:
点击关键代码页。
b。在“编辑”菜单上,导航到新的,并选择“字符串值”。
c。类型“dbfDefault”为新值,并按下ENTER。
新代码页的关键应该是这样的:
点击关键代码页。
b。在“编辑”菜单上,导航到新的,并选择“字符串值”。
c。类型“dbfDefault”为新值,并按下ENTER。
新代码页的关键应该是这样的:
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