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

时间:2016-11-12 10:53:05

标签: c# c++ character-encoding non-ascii-characters bho

在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网址?

2 个答案:

答案 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

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