バイト配列(chars)へのポインタ形式の文字列を指定すると、C/C++で文字列のエンコーディングを検出できますか(Visual Studio 2008を使用しましたか? ?私は検索をしましたが、ほとんどのサンプルはC#で行われます。あなたが入力配列の長さを知っていると仮定すると、C/C++で文字列のエンコーディングを検出する
おかげで
バイト配列(chars)へのポインタ形式の文字列を指定すると、C/C++で文字列のエンコーディングを検出できますか(Visual Studio 2008を使用しましたか? ?私は検索をしましたが、ほとんどのサンプルはC#で行われます。あなたが入力配列の長さを知っていると仮定すると、C/C++で文字列のエンコーディングを検出する
おかげで
、次推測することができます:
0x80
から0xff
までの文字は、ASCIIまたはUTF-7ではありません。 Unicodeの変種に入力を制限している場合は、それをUTF-8とみなすことができます。それ以外の場合は、それがどれであるかを判断するためにいくつかの推測をしなければなりません。それは楽しいことではありません。それが解決する簡単な問題ではない、と一般的に比較的無害な入力によってアップトリップすることができます入力エンコーディングが何であるかせいぜい推測を、取るためにヒューリスティックに依存している - 例えば、this Wikipedia articleを見て、詳細についてはThe Notepad file encoding Reduxをご覧ください。
最小限の依存性を持つWindows専用ソリューションをお探しの場合は、IsTextUnicodeとMLangのDetectInputCodePageの組み合わせを使用して、文字セットの検出を試みることができます。
移植性を探していても、ICUの形でかなり大きな依存関係を取っても構わないのであれば、移植可能な方法で同じことを達成するためにはcharacter set detectionルーチンを利用することができます。
これはANSI対UCS2ですか? –
期待するエンコードは何ですか?可能なものの小さなコレクションはありますか、それはちょうど何かになりますか? –
どのような環境を使用していますか?私は、Windows上で移植可能な、Linux上でこれを行うライブラリがあると思います。 –