好的,这是另一个字符编码问题,表明我对 Unicode 的一切一无所知。
我正在从 Microsoft Excel.xls
文件中读取数据,并将其存储在 ESRI shapefiles.shp
中。对于 Excel > 5.0 的版本,excel 文件中的文本存储为 Unicode。但是,Unicode(特别UTF-8
是对 shapefile 的支持是不一致的,因此我认为我根本不应该使用它。但是,Shapefile 确实支持老式代码页。
在必须将 Unicode 字符串转换为未知但特定代码页中的字符串的情况下,最佳实践是什么?
据我了解,Unicode 字符串可以包含来自多个“代码页”的字符。因此,我假设我必须以某种方式估计要使用的“最佳”代码页,然后将所有不受支持的字符转换为该代码页中最接近的近似值(或 dreaded ?
)。这是通常的做法吗?
我绝对可以使用的不仅仅是系统代码页。因为.shp
文件使用.dbf
文件来存储它们的属性数据,所以至少.dbf
应该支持格式指定的所有代码页(参见xBase 格式说明)。支持的代码页有: DOS USA
, DOS Multilingual,
Windows ANSI,
Standard Macintosh
, EE MS-DOS
, Nordic MS-DOS
, Russian MS-DOS
, Icelandic MS-DOS
, Kamenicky (Czech) MS-DOS
, Mazovia (Polish) MS-DOS
, Greek MS-DOS (437G)
, Turkish MS-DOS
, Russian Macintosh
, Eastern European Macintosh
, Greek Macintosh
, Windows EE
, Russian Windows
, Turkish Windows
, Greek Windows
此外,一些应用程序支持使用*.cpg
指定要使用的其他代码页的文件(尽管我理解对 的支持utf-8
,并且我怀疑许多其他代码页是有限的)。
因为我正在尝试开发一个通用工具,所以我不能假设.xls
文件中 Unicode 的内容。