私はWindows-1251エンコーディングで書かれたdllプロジェクトを持っており、私のDLLの出力はUTF-16でエンコードされている必要があります。私は、変換を行うには、次の機能を使用します。Win1251-> UTF16変換
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);
は残念ながら、MultiByteToWideCharのは、ソースのエンコーディングにシステムロケールを使用しています。たとえば、私のWindowsのロケールが英語(米国)の場合、必要に応じてWin1251-> UTF8ではなくWin1252-> UTF8に変換されます。どちらか
は私が手動でロケールを設定しようとしましたが、次のコードは動作しません。
enc = setlocale(CL_ALL, "rus_rus.1251");
//this returns Windows-1251 encoding
ptr = MultiByteToWideChar(CP_ACP, 0, str, -1, wbuff.getBuffer(), len);
私は理解しているように、MultiByteToWideCharのはいつも私のsetlocaleの呼び出しを無視して、システムロケールを使用しています。
このような変換を行う他の方法はありますか?あるいは、私はこれらのロケール設定を正しく理解していないかもしれませんか?ありがとう。
P.S.私は文法の間違いで申し訳ありません。