jAc*_*OdE 6 windows character-encoding visual-c++
给定一个指向字节数组(chars)的字符串形式的字符串,如何在C/C++中检测字符串的编码(我使用的是visual studio 2008)?我进行了搜索,但大部分样本都是用C#完成的.
谢谢
假设您知道输入数组的长度,您可以进行以下猜测:
0x80
到0xff
,它肯定不是ASCII或UTF-7.如果您将输入限制为某些Unicode变体,则可以假设它是UTF-8.否则,您必须进行一些猜测以确定它是哪个多字节字符集.这不会很有趣.这不是一个容易解决的问题,并且通常依靠启发式方法来对输入编码进行最佳猜测,这可能会被相对无害的输入所绊倒 - 例如,看看这篇维基百科文章和记事本文件编码Redux以获得更多详细信息。
如果您正在寻找具有最小依赖性的仅限 Windows 的解决方案,您可以考虑使用IsTextUnicode和 MLang 的DetectInputCodePage的组合来尝试字符集检测。
如果您正在寻求可移植性,但不介意以 ICU 的形式承担相当大的依赖性,那么您可以利用它的字符集检测例程以可移植的方式实现相同的目标。
归档时间: |
|
查看次数: |
10184 次 |
最近记录: |