MFCプログラムがユニコード環境にあるので、以下のコードは正しく動作しません。作成方法:: WriteFileはUNICODE環境で動作しますか?
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);
結果が「123456」
私はUnicodeのBOMは、この問題を解決することができ、インターネット上で見つけることになっている「123」、です。 私は以下のようにコードを修正しました。
WORD Unicode = 0xfeff; // UNICODE BOM
::WriteFile(hFile, &Unicode, 2, &dwByte, nullptr);
::WriteFile(hFile, TEXT("123456"), lstrlenW(TEXT("123456")), &dwByte, nullptr);
::CloseHandle(hFile);
ただし、それは違いはありません。
シンプルな問題のようですが、解決策を探していなくなりました。
どんなアイデアも歓迎されます。前もって感謝します。
、ありがとうございました。ありがとう。 –
'TEXT()'はUNICODEが定義されているかどうかによって 'char'または' wchar_t'で動作しますが、 'lstrlenW()'は 'wchar_t'だけで動作します。コードが両方の環境で動作するようにするには、 'writeFile(hFile、TEXT(" 123456 ")、lstrlen(TEXT(" 123456 "))*のように' lstrlen() 'と' sizeof(TCHAR) sizeof(TCHAR)、...) ' –
@RemyLebeau - もう一度...いい人! –