是否有 OutputDebugString 的 Unicode 替代方案?

Jic*_*hao 4 windows debugging unicode winapi outputdebugstring

OutputDebugString()是本机 ASCII,这意味着它在调用 ASCII 版本之前将输入的 Unicode 字符串转换为本地字符串OutputDebugStringA()

是否有其他OutputDebugString()支持 Unicode 的替代方案?

Pet*_*ene 5

OutputDebugStringW不会在内部调用OutputDebugStringA,因此无法在系统代码页中表示的 Unicode 字符将被替换为?.

奇怪的是,调试器从操作系统接收到的用于打印消息的OUTPUT_DEBUG_STRING_INFO结构似乎支持让调试器知道字符串是否为 Unicode,只是它似乎根本没有被使用OutputDebugStringW

不幸的是,我不知道让操作系统使用 Unicode 字符串引发OUTPUT_DEBUG_STRING_EVENT的机制。使用公共 API 可能无法实现。

  • [文档](https://docs.microsoft.com/en-us/windows/win32/api/debugapi/nf-debugapi-outputdebugstringw) 说:“*重要:**过去,操作系统没有通过 `OutputDebugStringW` 输出 Unicode 字符串,而不是仅输出 ASCII 字符串**。为了强制 `OutputDebugStringW` 正确输出 Unicode 字符串,调试器需要调用 `WaitForDebugEventEx` 来选择新的行为。在调用 `WaitForDebugEventEx` 时,操作系统将知道调试器支持 Unicode 并且专门选择接收 Unicode 字符串*” 使用最新的调试器 (3认同)