好的,这是又一个字符编码问题,展示了我的对Unicode一无所知。
我正在从Microsoft Excel .xls
文件中读取数据,并将其存储在ESRI shapefiles .shp
中。对于Excel版本> 5.0,Excel文件中的文本以Unicode格式存储。然而,Unicode(特别是UTF-8
支持形状文件不一致),因此我认为根本不应该使用它。但是,shapefiles确实支持老式的代码页。
在必须将Unicode字符串转换为未知但特定代码页的字符串的情况下,最佳实践是什么?
据我所知,Unicode字符串可以包括来自多个“代码页”的字符。因此,我会假设我必须以某种方式估计要使用的“最佳”代码页,然后将所有不受支持的字符转换为该代码页中最接近的近似值(或可怕的?
)。这是通常的方法吗?
.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 内容的内容。