将编码的俄语字符从 url 解码为 BHO 中的实际字符

Decode encoded Russian characters from url to actual characters in BHO

导航到非 ascii url:IE 中的“http://ru.wikipedia.org/wiki/Елизавета_I”时,在 BHO 中的 OnBeforeNavigate2 处收到的 url 被编码为

https://ru.wikipedia.org/wiki/%D0%95%D0%BB%D0%B8%D0%B7%D0%B0%D0%B2%D0%B5%D1%82%D0%B0_I

这是什么编码类型? 我如何在 c# 或 c++ 中将此 url 转换回原始的非 ascii url?

每个 %XX 元组是十六进制表示法(和百分号)中的一个字节。所以 %D0 是一个具有(无符号)值 208 的字节。用两种语言转换它应该很容易。

结果将是UTF8编码的URL。

当然这在BHO内部是不可能的,

因此,我更改了使用 URI class.

在托管代码中执行此操作的方法

Uri.UnescapeDataString(https://ru.wikipedia.org/wiki/%D0%95%D0%BB%D0%B8%D0%B7%D0%B0%D0%B2%D0%B5%D1%82%D0%B0_I)

哪个returns“http://ru.wikipedia.org/wiki/Елизавета_I”。