解码编码的俄罗斯字符从url到实际字符在BHO

本文关键字:字符 BHO 编码 俄罗斯 解码 url | 更新日期: 2023-09-27 18:17:30

在IE中导航到非ascii url: "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

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

解码编码的俄罗斯字符从url到实际字符在BHO

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

结果将是UTF8编码的URL。

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

所以,我改变了我的方法,在使用URI类的托管代码中做到这一点。

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)

返回"http://ru.wikipedia.org/wiki/Елизавета_I"。