0

私はmsdn(ファイルハンドルからファイル名を取得する)でこのコードを使用して、findfirstchangenotificationから取得したファイルハンドルファイル名を取得しました。

しかし今問題は、結果の文字列のエンコーディングがどういうわけか間違っているということです。すべての文字(通常は疑問符)ではなく、1つの文字が表示されます。

したがって、私のコードはを呼び出しGetMappedFileName、疑問符を取得します。

 if (GetMappedFileName (GetCurrentProcess(), 
                         pMem, 
                         pszFilename,
                         MAX_PATH)) 

なんで?

4

1 に答える 1

2

の「A」形式を呼び出していGetMappedFileNameます。これは、現在の ACP でのみ文字を配信できます。ファイル名には現在の ACP にない文字が含まれているため、疑問符に変わります。

現在の ACP で表現されていない Unicode 文字がファイル名に含まれている場合、疑問符が表示されます。ファイル名の Unicode 形式を取得するには、API の「W」形式を呼び出してから、それをどうするかを決定する必要があります。

于 2012-11-17T13:21:57.200 に答える