gpt4 book ai didi

language-agnostic - 如何以不支持 utf-8 的格式存储 unicode 数据

转载 作者:行者123 更新时间:2023-12-04 07:44:22 24 4
gpt4 key购买 nike

好的,这是另一个字符编码问题,表明我对 Unicode 的所有事物一无所知。

我正在从 Microsoft Excel 中读取数据 .xls文件,并将其存储在 ESRI shapefile .shp .对于 Excel > 5.0 的版本,excel 文件中的文本存储为 Unicode。但是,Unicode(特别是 UTF-8 support for shapefiles is inconsistent,因此我认为我根本不应该使用它。不过,Shapefile 确实支持老式代码页。

在必须将 Unicode 字符串转换为未知但特定代码页中的字符串的情况下,最佳实践是什么?

据我了解,Unicode 字符串可以包含来自多个“代码页”的字符。因此,我假设我必须以某种方式估计要使用的“最佳”代码页,然后将所有不受支持的字符转换为该代码页中最接近的近似值(或可怕的 ? )。这是通常的方法吗?

我绝对可以使用的不仅仅是系统代码页。因为 .shp文件使用 .dbf文件来存储它们的属性数据,至少是.dbf 指定的所有代码页。应支持格式(请参阅 xBase format description )。支持的代码页是: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 内容做出任何假设。文件。

最佳答案

What is the best practice in a situation where you must convert a Unicode string to a string in an unknown but specific codepage?



取决于文件格式。如果它支持 Unicode“转义序列”,如 XML 的 €或 JSON 的 \u20AC ,然后使用它们,您不会丢失任何信息。如果不是,则需要不同的方法。

I would assume, therefore, that I must somehow estimate the "best" codepage to use,



通常,在非 Unicode 系统上,您会将字符转换为任何默认编码,而不是任意代码页。

编辑 :所以你可以选择代码页:
01h     DOS USA                      code page 437
6Ah Greek MS-DOS (437G) code page 737
02h DOS Multilingual code page 850
64h EE MS-DOS code page 852
6Bh Turkish MS-DOS code page 857
67h Icelandic MS-DOS code page 861
65h Nordic MS-DOS code page 865
66h Russian MS-DOS code page 866
C8h Windows EE code page 1250
C9h Russian Windows code page 1251
03h Windows ANSI code page 1252
CBh Greek Windows code page 1253
CAh Turkish Windows code page 1254
04h Standard Macintosh code page 10000
98h Greek Macintosh code page 10006
96h Russian Macintosh code page 10007
68h Kamenicky (Czech) MS-DOS
69h Mazovia (Polish) MS-DOS
97h Eastern European Macintosh

要选择代码页,我建议:
  • 检查您的数据是否为纯 ASCII。如果是这样,您选择哪个代码页并不重要。
  • 如果不是,请尝试找到一个可以准确表示您的数据的代码页(如果不能,请尽量减少不可表示的字符)。首先尝试代码页 1252,然后是其他 125x 代码页。除非您有方框图字符,否则不要理会 DOS 代码页。

  • and then convert all non-supported characters into their closest approximation in that codepage (or the dreaded ?). Is this the usual approach?



    这是我们在工作中需要将 UTF-8 文件转换为 windows-1252 或 EBCDIC 时采用的方法。我使用 Unidecode 来帮助生成“最接近的近似值”。

    但是,我们只替换字母和数字,而不替换标点符号。用“”替换“”会破坏一些文件格式。

    关于language-agnostic - 如何以不支持 utf-8 的格式存储 unicode 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170183/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com