給定一個指向字節數組(字符串)的指針形式的字符串,我如何檢測C/C++中的字符串編碼(我用過visual studio 2008)? ?我做了一個搜索,但大多數樣本都是用C#完成的。在C/C++中檢測字符串的編碼
感謝
給定一個指向字節數組(字符串)的指針形式的字符串,我如何檢測C/C++中的字符串編碼(我用過visual studio 2008)? ?我做了一個搜索,但大多數樣本都是用C#完成的。在C/C++中檢測字符串的編碼
感謝
假設你知道輸入數組的長度,你可以做如下的猜測:
0x80
到0xff
,它當然不是ASCII或UTF-7。如果您將輸入限制爲某種Unicode的變體,則可以將其假定爲UTF-8。否則,你必須做一些猜測,以確定它是哪個multi-byte character set。那不會很有趣。這不是容易解決的問題,通常依賴於啓發式採取在輸入的編碼是什麼的最佳猜測,這可以通過相對無害的輸入被絆倒了 - 比如,看看this Wikipedia article和The Notepad file encoding Redux瞭解更多詳情。
如果您正在尋找一個只依賴最少的Windows解決方案,可以使用IsTextUnicode和MLang的DetectInputCodePage組合來查看字符集檢測。
如果您正在尋找便攜性,但不介意以ICU的形式承擔相當大的依賴性,那麼您可以利用它的character set detection例程以便攜方式實現相同的功能。
這只是ANSI vs UCS2? –
您期望的可能編碼是什麼?是否有可能的小集合,或者它可能只是一個? –
你在使用什麼環境?我認爲在Linux下有一個可以移植到Windows的庫。 –