如何识别TBytes数组是否可以安全地转换为AnsiString,string或UTF8String?

时间:2014-07-01 06:03:46

标签: delphi

给定一个TBytes数组,我们能否确定数组是否可以转换为AnsiString,String或UTF8String而不会丢失任何字符?

1 个答案:

答案 0 :(得分:1)

你似乎要求做的事是不可能的。您似乎有一个未知来源的字节数组,可以编码为ANSI,UTF-8或UTF-16。您希望能够确定哪种编码是正确的。

这是不可能的,因为存在在所有这三种编码中都有效的字节数组,并且它们代表每种编码中的不同字符串。 Raymond Chen在这里展示了一个很好的例子:The Notepad file encoding problem, redux

您可以使用启发式算法来尝试猜测编码,其中一个示例是IsTextUnicode。但任何这样的方法都必然不健全。