将编码的俄语字符从 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”。
导航到非 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”。