服务器变量 UNENCODED_URL 包含奇怪的值而不是编码的斜杠

Server variable UNENCODED_URL contains strange value instead of encoded slash

我们有一个遗留 IIS DLL,它使用 GetServerVariable (MSDN) 来检索 UNENCODED_URL 的值。当访问 URL:

https://example.com/a%2Fb

检索到的值将如下所示:

/path/to/server.dll/a0.000000b

这很奇怪,因为它应该是这样的:

/path/to/server.dll/a%2Fb

lpszPathInfo (MSDN) 的 LPEXTENSION_CONTROL_BLOCK 的值为:

/a/b

符合预期。

有人知道为什么 UNENCODED_URL 值看起来像这样吗?我怎样才能检索到正确的值?

例如,如果您使用 printf 来输出环境变量的值,而不是使用调试器或 puts,那将对此进行解释。 %2f 将被理解为对 printf 的命令,将第一个变量参数输出为浮点数。

始终使用 puts 或其他不改变值的函数输出字符串。