好的,这是另一个字符编码问题,表明我对 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 的内容。