我有平面文件,我可以在 .NET 中以 UTF-16 很好地加载,即使它们在技术上是 UCS2-LE(没有 BOM),我理解这是因为 UCS-2 是 UTF-16 的旧标准取代。
但是,我感兴趣的是能够确定一个文件是否真的是 UCS-2。我知道这意味着我会猜测。我已经尝试了 chardet 的 .NET 端口、IMultilang2 互操作以及 Novell 的一些开放源代码,试图找出 UCS-2 优于 UTF-16 的决定,但我没有取得任何成功。我还没有找到任何可以确定 UCS-2LE w/o BOM 和无效/超长 UTF-8 之间区别的技术。
我应该逐字节检查它们并尝试确定它是可变长度编码还是固定长度编码?也许寻找丢失的代码点?问题是这些文本文件没有特殊的代码点,它们只有沼泽标准的西方字符集。但是 TextPad 将它们保存为 UCS2-LE w/o BOM,它使我们的软件中的下游文件操作复杂化,希望它们完全符合 UTF-16(并且只是强制加载文件有效,但不能满足软件的要求)。