给定一个指向字节数组(char)的指针forms的string,如何检测C / C ++中的string编码(我用过visual studio 2008)? 我做了一个search,但大多数样本是在C#中完成的。
谢谢
假设你知道输入数组的长度,你可以进行如下的猜测:
0x80
到0xff
,肯定不是ASCII或UTF-7。 如果您将输入限制为某种Unicode的变体,则可以认为它是UTF-8。 否则,你必须做一些猜测来确定它是多字节字符集 。 那不会很有趣。 这不是一个容易解决的问题,而且通常依赖于启发式方法来最好地猜测输入的编码是什么,这可以通过相对无害的输入来绊倒 – 例如,看看这篇维基百科文章和记事本文件编码Redux的更多细节。
如果您正在寻找只依赖最少的Windows解决方案,则可以使用IsTextUnicode和MLang的DetectInputCodePage组合来查看字符集检测。
如果你正在寻找便携性,但不介意以ICU的形式承担相当大的依赖,那么你可以利用它的字符集检测例程来以便携的方式实现相同的事情。