0

我正在做一个P/InvokeonNtdll.dll!NtWriteFile并且在阅读 Buffer(PVOID)时,我得到了无法识别的字符。我尝试了不同的编码,没有任何变化。我还在使用 API Monitor 监控流程,Rohitab因此我看到了我正在尝试检索的正确值。有人遇到这个问题吗?

NtWriteFile(
  IN HANDLE  FileHandle,
  IN HANDLE  Event OPTIONAL,
  IN PIO_APC_ROUTINE      ApcRoutine OPTIONAL,
  IN PVOID ApcContext OPTIONAL,
  OUT PIO_STATUS_BLOCK    IoStatusBlock,
  IN PVOID Buffer,
  IN ULONG Length,
  IN PLARGE_INTEGER ByteOffset OPTIONAL,
  IN PULONG  Key OPTIONAL );

输出示例:

笍^稌ƭ덾塾畿浽ꭼɿ굺ꥻꥻ Āጀ'℀

萰퓶픊 缊<縌੾葿缱댥뙾퍿Ϳ큾靾≿

缌縌ϲ抿⹿筿偿᱿㽿豿缊f縌ϲ橿⹿筿偿᱿㽿ꅿ왿ѿ豿豿缷舆ⴀᣢ</p>

4

2 回答 2

1

当您将 ASCII 或 ANSII 编码的文本解释为 UTF-16 时,就会发生这种情况。因此,您需要找出文本编码的真正含义,并进行相应的解释。

因此,无论您使用什么来检查数据,都可能错误地使用了 UTF-16。或者,更有可能的是,您编写的代码应该是 UTF-16。

于 2014-06-18T16:53:46.200 回答
-1

我能够使用以下内容对文本进行编码。

Byte[] bytes = Encoding.Unicode.GetBytes(p);
var bUTF8 = Encoding.UTF8.GetString(bytes);
于 2014-06-20T13:32:15.363 回答