在IE中导航到非ascii网址:“http://ru.wikipedia.org/wiki/Елизавета_I”时,在BHO内的OnBeforeNavigate2处收到的网址被编码为
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 ++中原始的非ascii网址?
答案 0 :(得分:1)
每个%XX
元组都是十六进制表示法中的一个字节(和百分号)。所以%D0是一个带有(无符号)值208的字节。应该很容易用两种语言转换它。
结果将是UTF8编码的URL。
答案 1 :(得分:1)
当然这在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)