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

C# 将编码的俄语字符从url解码为BHO中的实际字符,c#,c++,character-encoding,non-ascii-characters,bho,C#,C++,Character Encoding,Non Ascii Characters,Bho,在IE内导航到非ascii url:“”时,在BHO内的OnBeforeNavigate2处接收到的url编码为 这种编码类型是什么? 如何将这个URL转换成C或C++中的原始非ASCII URL?< /P> < P>每个 %XX < /Cord>元组是十六进制记数法中的一个字节(和百分率符号)。因此%D0是一个具有(无符号)值208的字节。将其转换为两种语言应该很容易 结果将是UTF8编码的URL。每个%XX元组是一个十六进制字节(和百分号)。因此%D0是一个具有(无符号)值208的字节。将

在IE内导航到非ascii url:“”时,在BHO内的OnBeforeNavigate2处接收到的url编码为

这种编码类型是什么?
如何将这个URL转换成C或C++中的原始非ASCII URL?< /P> < P>每个<代码> %XX < /Cord>元组是十六进制记数法中的一个字节(和百分率符号)。因此%D0是一个具有(无符号)值208的字节。将其转换为两种语言应该很容易


结果将是UTF8编码的URL。

每个
%XX
元组是一个十六进制字节(和百分号)。因此%D0是一个具有(无符号)值208的字节。将其转换为两种语言应该很容易


结果将是UTF8编码的URL。

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

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

Uri.UnescapeDataString()


返回“.”

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

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

Uri.UnescapeDataString()


返回“.

c#是否有一个实用程序类,我可以专门用于这种情况下的utf-8转换?@ArnoldS将UTF8转换为什么?(十六进制部分到纯字节的百分比与UTF8无关。结果是UTF8,而不是百分比)你是说%D0%95%D0%BB%D0%B8%D0%B7%D0%B0%D0%D0%B2%D0%B5%D1%82%D0%B0\I以上url的一部分是UTF-8吗?还是整个URL已编码?@ArnoldS%D0。。。部分是UTF8文本的“url编码”。转换%D0后。。。对于字节,您有纯UTF8文本。理想情况下,你不应该把它转换成任何东西。UTF8与ASCII相当,但纯旧ASCII无法处理俄语字符(或任何非英语的内容),并且不再使用(除了出于某种原因仍在使用的非常旧的程序中)。如何转换%D0。。将上述字符串的一部分转换为字节?我是否必须迭代整个字符串以获取%D0。。零件,将其转换并在原始url内替换?或者c#中有我可以使用的机制吗?c#是否有一个实用类,我可以专门用于这种情况下的utf-8转换?@ArnoldS将UTF8转换为什么?(十六进制部分到纯字节的百分比与UTF8无关。结果是UTF8,而不是百分比)你是说%D0%95%D0%BB%D0%B8%D0%B7%D0%B0%D0%D0%B2%D0%B5%D1%82%D0%B0\I以上url的一部分是UTF-8吗?还是整个URL已编码?@ArnoldS%D0。。。部分是UTF8文本的“url编码”。转换%D0后。。。对于字节,您有纯UTF8文本。理想情况下,你不应该把它转换成任何东西。UTF8与ASCII相当,但纯旧ASCII无法处理俄语字符(或任何非英语的内容),并且不再使用(除了出于某种原因仍在使用的非常旧的程序中)。如何转换%D0。。将上述字符串的一部分转换为字节?我是否必须迭代整个字符串以获取%D0。。零件,将其转换并在原始url内替换?或者c#中有我可以使用的机制吗?搜索“百分比编码URL”。也请阅读此处---“例如,字符串:François将被编码为:Fran%C3%A7ois(在UTF-8中,“ç”被编码为两个字节C3(十六进制)和A7(十六进制),然后分别写为三个字符“%C3”和“%A7”)。搜索“百分比编码URL”。也请阅读此处---“例如,字符串:François,将被编码为:Fran%C3%A7ois(“ç”在UTF-8中编码为两个字节C3(十六进制)和A7(十六进制),然后分别写入三个字符“%C3”和“%A7”)